public NResult <EItemInfo> GetAvaliableItem(QItem qItem) { NResult <EItemInfo> result = new NResult <EItemInfo>(); try { using (OOContent db = new OOContent()) { var list = db.DBItemInfo.Where(a => a.RecordStatus == RecordStatus.Normal).OrderByDescending(a => a.CreatedTime); if (qItem.pageIndex == 0) { result.resultList = list.Take(qItem.pageSize).ToList(); } else { result.resultList = list.Skip(qItem.pageIndex * qItem.pageSize).Take(qItem.pageSize).ToList(); } } } catch (Exception ex) { result.IsSuccess = false; result.ErrorMsg = ex.Message; } return(result); }
public QItem(int _x, int _y, int _distance, QItem _last_item) { this.position.X = _x; this.position.Y = _y; this.distance = _distance; this.last_item = _last_item; }
// ///// private void buttonPesquisar_Click(object sender, EventArgs e) { try { dataGridViewResultado.Rows.Clear(); QItem queryCodigo = new QItem(null, null); //QItem queryEmpresaNome = new QItem(null, null); QItem queryClienteNome = new QItem(null, null); //codigo if (this.textBoxCodigo.Text != "") { queryCodigo = new QItem("c.id", this.textBoxCodigo.Text); } else { queryCodigo = new QItem(null, null); } //cliente if (this.textBoxClienteNome.Text != "") { queryClienteNome = new QItem("c.nome LIKE %%", this.textBoxClienteNome.Text); } else { queryClienteNome = new QItem(null, null); } //empresa //if (this.textBoxEmpresaNome.Text != "") // queryClienteNome = new QItem("e.nome LIKE %%", this.textBoxEmpresaNome.Text); //else // queryClienteNome = new QItem(null, null); List <Library.Cliente> clientes = Library.ClienteBD.FindAdvanced(queryCodigo, queryClienteNome);//, queryEmpresaNome); if (clientes != null) { foreach (Library.Cliente c in clientes) { /*string status = ""; * if (c.Notificacao != 0) * { * status = "Notificação " + c.Notificacao; * }*/ dataGridViewResultado.Rows.Add(c.Id, c.Nome, "");//status); } } } catch (Exception ex) { Console.WriteLine(ex); } }
public async Task <IHttpActionResult> Remove([FromBody] QItem p) { var r = new ResultBase(); var id = p.id; using (db0 = new Bpple_DBEntities()) { try { var md = await db0.Member.FindAsync(id); var entry = db0.Entry <Member>(md); entry.State = EntityState.Deleted; await db0.SaveChangesAsync(); r.state = 0; } catch (Exception ex) { r.state = 999; r.message = ex.Message; } return(Ok(r)); } }
public QElem(QItem data) { foreach (var x in data.toArray()) { PropertyInfo prop = this.GetType().GetProperty(x.Key, BindingFlags.Public | BindingFlags.Instance); if (null != prop && prop.CanWrite) { prop.SetValue(this, x.Value, null); } } }
public SupplierTenderQuantityTable SaveQuantityTableItems(long tableId, List <TenderQuantityItemDTO> lst, string tableName, long currentItemId, out long itemId) { itemId = 0; Name = tableName; if (QuantitiyItemsJson == null) { QuantitiyItemsJson = new SupplierTenderQuantityTableItemJson(); QuantitiyItemsJson.Create(); } bool ItemExists = QuantitiyItemsJson.SupplierTenderQuantityTableItems != null && QuantitiyItemsJson.SupplierTenderQuantityTableItems.Any(a => /*a.IsActive == true && a.SupplierTenderQuantityTableId == tableId && */ a.ItemNumber == currentItemId); var lastIndex = QuantitiyItemsJson.SupplierTenderQuantityTableItems.Any() ? QuantitiyItemsJson.SupplierTenderQuantityTableItems.OrderByDescending(t => t.ItemNumber).FirstOrDefault().ItemNumber : 0; foreach (var item in lst) { if (!ItemExists) { byte[] gb = Guid.NewGuid().ToByteArray(); long IId = BitConverter.ToInt64(gb, 0); var idExsit = QuantitiyItemsJson.SupplierTenderQuantityTableItems.Any(x => x.Id == IId); while (idExsit) { gb = Guid.NewGuid().ToByteArray(); IId = BitConverter.ToInt64(gb, 0); idExsit = QuantitiyItemsJson.SupplierTenderQuantityTableItems.Any(x => x.Id == IId); } QuantitiyItemsJson.SupplierTenderQuantityTableItems.Add(new SupplierTenderQuantityTableItem(IId, item.ColumnId, item.TenderFormHeaderId, item.TemplateId, item.Value, lastIndex + 1)); itemId = lastIndex + 1; } else { SupplierTenderQuantityTableItem QItem; if (item.Id != 0) { QItem = QuantitiyItemsJson.SupplierTenderQuantityTableItems.FirstOrDefault(q => q.Id == item.Id); } else { QItem = QuantitiyItemsJson.SupplierTenderQuantityTableItems.FirstOrDefault(q => q.ItemNumber == item.ItemNumber && q.ColumnId == item.ColumnId && q.TenderFormHeaderId == item.TenderFormHeaderId); } QItem.UpdateItems(item.ColumnId, item.TenderFormHeaderId, item.TemplateId, item.Value, currentItemId); } } if (tableId == 0) { EntityCreated(); QuantitiyItemsJson.Create(); } else { EntityUpdated(); QuantitiyItemsJson.Update(); } return(this); }
public TenderQuantityTableChanges SaveQuantityTableItems(long tableId, List <TenderQuantityItemDTO> lst, long currentItemId, out long itemId) { itemId = 0; bool ItemExists = QuantitiyItemsChangeJson != null && QuantitiyItemsChangeJson.TenderQuantityTableItemChanges != null && QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.Any(a => /*a.IsActive == true && a.TenderQuantityTableChangesId == tableId &&*/ a.ItemNumber == currentItemId); var lastIndex = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges /*.Where(a => a.IsActive == true && a.TenderQuantityTableChangesId == tableId)*/.Any() ? QuantitiyItemsChangeJson.TenderQuantityTableItemChanges/*.Where(a => a.IsActive == true && a.TenderQuantityTableChangesId == tableId)*/ .Max(a => a.ItemNumber) : 0; foreach (var item in lst) { byte[] gb = Guid.NewGuid().ToByteArray(); long IId = BitConverter.ToInt64(gb, 0); var idExsit = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.Any(x => x.Id == IId); while (idExsit) { gb = Guid.NewGuid().ToByteArray(); IId = BitConverter.ToInt64(gb, 0); idExsit = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.Any(x => x.Id == IId); } if (!ItemExists) { QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.Add(new TenderQuantityTableItemChanges(IId, item.ColumnId, item.TenderFormHeaderId, item.TemplateId, item.ColumnName, item.Value, lastIndex + 1)); itemId = lastIndex + 1; } else { TenderQuantityTableItemChanges QItem; if (item.Id != 0) { QItem = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.FirstOrDefault(q => q.Id == item.Id); } else { QItem = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.FirstOrDefault(q => q.ItemNumber == item.ItemNumber && q.ColumnId == item.ColumnId && q.TenderFormHeaderId == item.TenderFormHeaderId); } if (QItem != null) { QItem.UpdateItems(item.ColumnId, item.TenderFormHeaderId, item.TemplateId, item.ColumnName, item.Value, currentItemId); } } } if (tableId == 0) { EntityCreated(); QuantitiyItemsChangeJson.SetAddedState(); } else { EntityUpdated(); QuantitiyItemsChangeJson.SetUpdateState(); } return(this); }
public async Task <IHttpActionResult> Get([FromUri] QItem p) { var r = new ResultData <Member>(); var id = p.id; using (db0 = new Bpple_DBEntities()) { var item = await db0.Member.FindAsync(id); r.state = 0; r.data = item; r.exist = item != null; return(Ok(r)); } }
public void Pesquisar() { if ((comboBoxEmpresa.SelectedIndex != -1) & (comboBoxCliente.SelectedIndex != -1)) { Library.Empresa empresa = (Library.Empresa)comboBoxEmpresa.SelectedItem; Library.Cliente cliente = (Library.Cliente)comboBoxCliente.SelectedItem; QItem queryData1 = new QItem(null, null); QItem queryData2 = new QItem(null, null); //dataEntrega if (empresa != null) { queryData1 = new QItem("e.id", empresa.Id); } else { queryData1 = new QItem(null, null); } if (cliente != null) { queryData2 = new QItem("c.id", cliente.Id); } else { queryData2 = new QItem(null, null); } List <Library.TermoCompromisso> termos = Library.TermoCompromissoBD.FindAdvanced(queryData1, queryData2); if (termos != null) { this.dataGridViewTermos.Rows.Clear(); this.dataGridViewParcelas.Rows.Clear(); foreach (Library.TermoCompromisso tc in termos) { this.dataGridViewTermos.Rows.Add(tc.Id, tc.Cliente.Nome, tc.Empresa.Nome, tc.Data); } } } }
// This method prints nodes in top view of binary tree public void printTopView() { // base case if (root == null) { return; } // Creates an empty hashset HashSet <int> set = new HashSet <int>(); // Create a queue and add root to it Queue <QItem> Q = new Queue <QItem>(); Q.Enqueue(new QItem(root, 0)); // Horizontal distance of root is 0 // Standard BFS or level order traversal loop while (Q.Count != 0) { // Remove the front item and get its details QItem qi = Q.Dequeue(); int hd = qi.hd; TreeNode n = qi.node; // If this is the first node at its horizontal distance, // then this node is in top view if (!set.Contains(hd)) { set.Add(hd); Console.WriteLine(n.key + " "); } // Enqueue left and right children of current node if (n.left != null) { Q.Enqueue(new QItem(n.left, hd - 1)); } if (n.right != null) { Q.Enqueue(new QItem(n.right, hd + 1)); } } }
private void c_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; // resultadoDGV.Rows.Clear(); QItem queryCodigo = new QItem(null, null); QItem queryClienteNome = new QItem(null, null); //codigo if (this.codigoTB.Text != "") { queryCodigo = new QItem("v.id", this.codigoTB.Text); } else { queryCodigo = new QItem(null, null); } //cliente if (this.clienteNomeTB.Text != "") { queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text); } else { queryClienteNome = new QItem(null, null); } List <Library.Cliente> clientes = Library.ClienteBD.FindAdvanced(queryCodigo, queryClienteNome); if (clientes != null) { foreach (Library.Cliente c in clientes) { resultadoDGV.Rows.Add(c.Id, c.Nome); } } // this.Cursor = Cursors.Default; }
//64 https://leetcode.com/problems/minimum-path-sum/ public int MinPathSumTimesOut(int[][] grid) { if (grid == null) { throw new ArgumentNullException(nameof(grid)); } int n = grid.Length; var min = int.MaxValue; QItem start = new QItem(0, 0, grid[0][0]); Queue <QItem> q = new Queue <QItem>(); q.Enqueue(start); while (q.Count > 0) { var current = q.Dequeue(); var rowLength = grid[current.Row].Length; if (current.Row + 1 == n && current.Col + 1 == rowLength) { min = Math.Min(min, current.Sum); } //down if (current.Row + 1 < n) { q.Enqueue(new QItem(current.Row + 1, current.Col, current.Sum + grid[current.Row + 1][current.Col])); } //right if (current.Col + 1 < rowLength) { q.Enqueue(new QItem(current.Row, current.Col + 1, current.Sum + grid[current.Row][current.Col + 1])); } } return(min); }
//返回从start到target的最短链 public int shortestChainLen(String start, String target, List <String> D) { Queue <QItem> Q = new Queue <QItem>(); QItem item = new QItem(start, 1); Q.Enqueue(item); //把第一个字符串添加进来 while (Q.Count > 0) { QItem curr = Q.Peek(); Q.Dequeue(); for (int i = D.Count - 1; i >= 0; i--) { String temp = D[i]; //如果这两个字符串只有一个字符不同 if (IsAdjacent(curr.word, temp)) { item.word = temp; item.Len = curr.Len + 1; Q.Enqueue(item); //把这个字符串放入到队列中 //把这个字符串从队列中删除来避免被重复遍历 D.Remove(D[i]); //通过转变后得到了目标字符 if (temp == target) { return(item.Len); } } } } return(0); }
private void pesquisarButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; // resultadoDGV.Rows.Clear(); QItem queryData1 = new QItem(null, null); QItem queryData2 = new QItem(null, null); QItem queryCodigo = new QItem(null, null); QItem queryClienteNome = new QItem(null, null); //dataEntrega if (this.dataInicioDTP.Text != "") { queryData1 = new QItem("dataMenor", this.dataInicioDTP.Value.ToString("yyyy-MM-dd")); } else { queryData1 = new QItem(null, null); } if (this.dataTerminoDTP.Text != "") { queryData2 = new QItem("dataMaior", this.dataTerminoDTP.Value.ToString("yyyy-MM-dd")); } else { queryData2 = new QItem(null, null); } //codigo if (this.codigoTB.Text != "") { queryCodigo = new QItem("o.id", this.codigoTB.Text); } else { queryCodigo = new QItem(null, null); } //cliente if (this.clienteNomeTB.Text != "") { queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text); } else { queryClienteNome = new QItem(null, null); } List <Library.Condicional> condicionals = Library.CondicionalBD.FindAdvanced(queryData1, queryData2, queryCodigo, queryClienteNome); if (condicionals != null) { foreach (Library.Condicional o in condicionals) { resultadoDGV.Rows.Add(o.Id, o.Cliente.Nome, o.Data); } } this.Cursor = Cursors.Default; }
public string Paso(int[,] grid, int ff, int cc) { bool visualizarAnalisis = false; QItem source = new QItem(0, 0, 0, 0, ""); source.row = ff; source.col = cc; // applying BFS on matrix cells starting from source Queue <QItem> queue = new Queue <QItem>(); queue.Enqueue(new QItem(source.row, source.col, 0, grid[source.row, source.col], "Ini")); if (visualizarAnalisis) { Console.WriteLine("Agrega a la cola: " + grid[source.row, source.col]); } bool[,] visited = new bool[grid.GetLength(0), grid.GetLength(1)]; visited[source.row, source.col] = true; int pasoAnterior = grid[source.row, source.col]; while (queue.Count > 0) { QItem p = queue.Dequeue(); if (visualizarAnalisis) { Console.WriteLine("Quita de la cola: " + grid[p.row, p.col] + "(" + p.row + "," + p.col + ") > pasoAnterior: " + p.pasoAnterior + " > " + p.value.ToString()); } // moving up if (isValid((p.row - 1), p.col, grid, visited, p.row, p.col)) { queue.Enqueue(new QItem((p.row - 1), p.col, (p.dist + 1), grid[(p.row - 1), p.col], p.pasoAnterior + " > " + p.value.ToString())); visited[(p.row - 1), p.col] = true; if (visualizarAnalisis) { Console.WriteLine("Agrega a la cola: " + grid[(p.row - 1), p.col]); } } // moving down if (isValid((p.row + 1), p.col, grid, visited, p.row, p.col)) { queue.Enqueue(new QItem((p.row + 1), p.col, (p.dist + 1), grid[(p.row + 1), p.col], p.pasoAnterior + " > " + p.value.ToString())); visited[(p.row + 1), p.col] = true; if (visualizarAnalisis) { Console.WriteLine("Agrega a la cola: " + grid[(p.row + 1), p.col]); } } // moving left if (isValid(p.row, (p.col - 1), grid, visited, p.row, p.col)) { queue.Enqueue(new QItem(p.row, (p.col - 1), (p.dist + 1), grid[p.row, (p.col - 1)], p.pasoAnterior + " > " + p.value.ToString())); visited[p.row, (p.col - 1)] = true; if (visualizarAnalisis) { Console.WriteLine("Agrega a la cola: " + grid[p.row, (p.col - 1)]); } } // moving right if (isValid((p.row), (p.col + 1), grid, visited, p.row, p.col)) { queue.Enqueue(new QItem(p.row, (p.col + 1), (p.dist + 1), grid[p.row, (p.col + 1)], p.pasoAnterior + " > " + p.value.ToString())); visited[p.row, (p.col + 1)] = true; if (visualizarAnalisis) { Console.WriteLine("Agrega a la cola: " + grid[p.row, (p.col + 1)]); } } if (queue.Count < 1) { string p1 = (p.dist.ToString() + " pasos para este camino: " + p.pasoAnterior + " > " + p.value.ToString()); return(p1); } } return("-1"); }
// Returns a list of Qitems with the positions of each node of the shortest path public List <Position> FindPath(int[,] _matrix, Position _start, Position _destination, int _flight_value) //flight_value is used if we want entities to fly, be ghosts... { Queue <QItem> queue = new Queue <QItem>(); int n_rows = _matrix.GetLength(0); int n_columns = _matrix.GetLength(1); bool[,] visited = new bool[n_rows, n_columns]; // Initialize working grid for (int i = 0; i < n_rows; i++) { for (int j = 0; j < n_columns; j++) { if (_flight_value <= _matrix[i, j]) { visited[i, j] = true; } else { visited[i, j] = false; } } } // Check for an invalid destination if (!IsValidPosition(_destination, n_rows, n_columns, visited)) { return(null); } Position[] directions = new Position[4]; // Left directions[0] = new Position(0, -1); // Up directions[1] = new Position(1, 0); // Right directions[2] = new Position(0, 1); // Down directions[3] = new Position(-1, 0); // Start the search queue.Enqueue(new QItem(_start.X, _start.Y, 0, null)); visited[_start.X, _start.Y] = true; Position temp_pos = new Position(-1, -1); // Used to loop through multiple positions while (queue.Count() > 0) { QItem p = queue.Dequeue(); // We found the path to exit if (p.position.X == _destination.X && p.position.Y == _destination.Y) { // Create the array for the path List <Position> shortest_path = new List <Position>(); QItem temp_qitem = p; while (temp_qitem.last_item != null) { shortest_path.Add(temp_qitem.position); temp_qitem = temp_qitem.last_item; } return(shortest_path); } // Try for next cell in all directions: for (int k = 0; k < 4; k++) { temp_pos.X = p.position.X + directions[k].X; temp_pos.Y = p.position.Y + directions[k].Y; if (IsValidPosition(temp_pos, n_rows, n_columns, visited)) { queue.Enqueue(new QItem(temp_pos.X, temp_pos.Y, p.distance + 1, p)); visited[temp_pos.X, temp_pos.Y] = true; } } } return(null); }
public static int minDistence(int[,] grid) { // M and N int height = grid.GetUpperBound(0) + 1; int width = grid.GetUpperBound(1) + 1; // Source QItem source = new QItem(0, 0, 0); // Visited array bool[,] visited = new bool[height, width]; // Init visited array and source for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { // Set to true for not possible to visit cells if (grid[i, j] == 0) { visited[i, j] = true; } // Finding source if (grid[i, j] == 2) { source.row = i; source.col = j; } } } // ---------------BFS------------ Queue <QItem> queue = new Queue <QItem>(); queue.Enqueue(source); visited[source.row, source.col] = true; while (queue.Count > 0) { var item = queue.Dequeue(); if (grid[item.row, item.col] == 9) { return(item.dist); } // Up if (item.row - 1 >= 0 && visited[item.row - 1, item.col] == false) { var nextUp = new QItem(item.row - 1, item.col, item.dist + 1); queue.Enqueue(nextUp); visited[item.row - 1, item.col] = true; } // Down if (item.row + 1 < height && visited[item.row + 1, item.col] == false) { var nextDown = new QItem(item.row + 1, item.col, item.dist + 1); queue.Enqueue(nextDown); visited[item.row + 1, item.col] = true; } // Left if (item.col - 1 >= 0 && visited[item.row, item.col - 1] == false) { var nextLeft = new QItem(item.row, item.col - 1, item.dist + 1); queue.Enqueue(nextLeft); visited[item.row, item.col - 1] = true; } // Right if (item.col + 1 < width && visited[item.row, item.col + 1] == false) { var nextRight = new QItem(item.row, item.col + 1, item.dist + 1); queue.Enqueue(nextRight); visited[item.row, item.col + 1] = true; } } return(-1); }
//Leet 1091 https://leetcode.com/problems/shortest-path-in-binary-matrix/ //BFS //all moves array //set grid cell to visited after queuing it public int ShortestPathBinaryMatrix(int[][] grid) { if (grid == null) { throw new ArgumentNullException(nameof(grid)); } int n = grid.Length; var result = -1; if (n == 0 || grid[0][0] != 0 || grid[n - 1][n - 1] != 0) { return(result); } var source = new QItem(0, 0, 1); var moves = new int[8][] { new int[2] { 0, 1 }, new int[2] { 0, -1 }, new int[2] { 1, 0 }, new int[2] { -1, 0 }, new int[2] { -1, -1 }, new int[2] { 1, -1 }, new int[2] { 1, 1 }, new int[2] { -1, 1 } }; Func <int[], bool> ValidMove = current => current[0] > -1 && current[0] < n && current[1] > -1 && current[1] < n && grid[current[0]][current[1]] == 0; var q = new Queue <QItem>(); q.Enqueue(source); var min = int.MaxValue; while (q.Count > 0) { var current = q.Dequeue(); if (current.Row == n - 1 && current.Col == n - 1) { min = Math.Min(min, current.Total); } else { foreach (var move in moves) { var newmove = new int[2] { current.Row + move[0], current.Col + move[1] }; if (ValidMove(newmove)) { q.Enqueue(new QItem(newmove[0], newmove[1], current.Total + 1)); grid[newmove[0]][newmove[1]] = 1; } } } } if (min != int.MaxValue) { result = min; } return(result); }
public int minDistance(int[,] grid, int ff, int cc) { QItem source = new QItem(0, 0, 0); // To keep track of visited QItems. Marking // blocked cells as visited. //for (int i = 0; (i < grid.GetLength(0)); i++) //{ // for (int j = 0; (j < grid.GetLength(1)); j++) // { // // Finding source // if (grid[i, j] == 115) // { // source.row = i; // source.col = j; source.row = ff; source.col = cc; // break; // } // } //} // applying BFS on matrix cells starting from source Queue <QItem> queue = new Queue <QItem>(); queue.Enqueue(new QItem(source.row, source.col, 0)); bool[,] visited = new bool[grid.GetLength(0), grid.GetLength(1)]; visited[source.row, source.col] = true; while ((queue.Count > 0)) { QItem p = queue.Dequeue(); // Destination found; if ((grid[p.row, p.col] == 100)) { return(p.dist); } // moving up if (isValid((p.row - 1), p.col, grid, visited, p.row, p.col)) { queue.Enqueue(new QItem((p.row - 1), p.col, (p.dist + 1))); visited[(p.row - 1), p.col] = true; } // moving down if (isValid((p.row + 1), p.col, grid, visited, p.row, p.col)) { queue.Enqueue(new QItem((p.row + 1), p.col, (p.dist + 1))); visited[(p.row + 1), p.col] = true; } // moving left if (isValid(p.row, (p.col - 1), grid, visited, p.row, p.col)) { queue.Enqueue(new QItem(p.row, (p.col - 1), (p.dist + 1))); visited[p.row, (p.col - 1)] = true; } // moving right if (isValid((p.row - 1), (p.col + 1), grid, visited, p.row, p.col)) { queue.Enqueue(new QItem(p.row, (p.col + 1), (p.dist + 1))); visited[p.row, (p.col + 1)] = true; } } return(-1); }
// Complete the findShortestRoute function below. public int findShortestRoute(string grid) { var rowCount = 0; var colCount = 0; var matrix = getMatrixGrid(grid, ref rowCount, ref colCount); var source = new QItem(0, 0, 0); var visited = new bool[rowCount, colCount]; for (var i = 0; i < rowCount; i++) { for (var j = 0; j < colCount; j++) { if (matrix[i, j] == "X") { visited[i, j] = true; } else { visited[i, j] = false; } if (matrix[i, j] == "O") { source.r = i; source.c = j; } } } var queue = new Queue <QItem>(); queue.Enqueue(source); visited[source.r, source.c] = true; while (queue.Count != 0) { QItem pQueue = queue.Peek(); queue.Dequeue(); if (matrix[pQueue.r, pQueue.c] == "T") { return(pQueue.dist); } if (pQueue.r - 1 >= 0 && visited[pQueue.r - 1, pQueue.c] == false) { queue.Enqueue(new QItem(pQueue.r - 1, pQueue.c, pQueue.dist + 1)); visited[pQueue.r - 1, pQueue.c] = true; } if (pQueue.r + 1 < rowCount && visited[pQueue.r + 1, pQueue.c] == false) { queue.Enqueue(new QItem(pQueue.r + 1, pQueue.c, pQueue.dist + 1)); visited[pQueue.r + 1, pQueue.c] = true; } if (pQueue.c - 1 >= 0 && visited[pQueue.r, pQueue.c - 1] == false) { queue.Enqueue(new QItem(pQueue.r, pQueue.c - 1, pQueue.dist + 1)); visited[pQueue.r, pQueue.c - 1] = true; } if (pQueue.c + 1 < colCount && visited[pQueue.r, pQueue.c + 1] == false) { queue.Enqueue(new QItem(pQueue.r, pQueue.c + 1, pQueue.dist + 1)); visited[pQueue.r, pQueue.c + 1] = true; } } return(-1); }
private void pesquisarButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; // resultadoDGV.Rows.Clear(); QItem queryData1 = new QItem(null, null); QItem queryData2 = new QItem(null, null); QItem queryCodigo = new QItem(null, null); QItem queryClienteNome = new QItem(null, null); QItem queryFormaPagamento = new QItem(null, null); //dataEntrega if (this.dataInicioDTP.Text != "") { queryData1 = new QItem("dataMenor", this.dataInicioDTP.Value.ToString("yyyy-MM-dd")); } else { queryData1 = new QItem(null, null); } if (this.dataTerminoDTP.Text != "") { queryData2 = new QItem("dataMaior", this.dataTerminoDTP.Value.ToString("yyyy-MM-dd")); } else { queryData2 = new QItem(null, null); } //codigo if (this.codigoTB.Text != "") { queryCodigo = new QItem("v.id", this.codigoTB.Text); } else { queryCodigo = new QItem(null, null); } //cliente if (this.clienteNomeTB.Text != "") { queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text); } else { queryClienteNome = new QItem(null, null); } //formaPagamento if (this.avistaRB.Checked == true) { queryFormaPagamento = new QItem("v.formaPagamento", "avista"); } if (this.chequeRB.Checked == true) { queryFormaPagamento = new QItem("v.formaPagamento", "cheque"); } if (this.cartaoRB.Checked == true) { queryFormaPagamento = new QItem("v.formaPagamento", "cartao"); } if (this.aprazoRB.Checked == true) { queryFormaPagamento = new QItem("v.formaPagamento", "aprazo"); } if (this.noFormaPagamentoRB.Checked == true) { queryFormaPagamento = new QItem(null, null); } List <Library.Venda> vendas = Library.VendaBD.FindAdvanced(queryData1, queryData2, queryCodigo, queryClienteNome, queryFormaPagamento); if (vendas != null) { foreach (Library.Venda v in vendas) { string fp = ""; if (v.FormaPagamento == "avista") { fp = "À vista"; } if (v.FormaPagamento == "aprazo") { fp = "À prazo"; } if (v.FormaPagamento == "cartao") { fp = "Cartão"; } if (v.FormaPagamento == "cheque") { fp = "Cheque"; } resultadoDGV.Rows.Add(v.Id, v.Cliente.Nome, fp, v.Data); } } // this.Cursor = Cursors.Default; }
//https://www.geeksforgeeks.org/shortest-distance-two-cells-matrix-grid/ //This is not a CTCI question but what the heck. //Can only think of 1 way. //For loops public int MinDistance(char[][] matrix) { if (matrix == null) { throw new ArgumentNullException(nameof(matrix)); } if (matrix.Length == 0) { return(-1); } var result = -1; QItem source = null; var n = matrix.Length; var m = matrix[0].Length; var visited = new bool[n, m]; for (int i = 0; i < matrix.Length; i++) { for (int j = 0; j < m; j++) { var cell = matrix[i][j]; if (cell == 's' || cell == '0') { visited[i, j] = true; if (cell == 's') { source = new QItem(i, j, 0); } } } } if (source != null) { var allowedMoves = new int[4][] { new int[] { 0, -1 }, new int[] { 0, 1 }, new int[] { -1, 0 }, new int[] { 1, 0 } }; Queue <QItem> q = new Queue <QItem>(new QItem[] { source }); var min = int.MaxValue; while (q.Count > 0) { var current = q.Dequeue(); if (matrix[current.Row][current.Col] == 'd') { min = Math.Min(min, current.Total); } else { foreach (var move in allowedMoves) { var newMove = new int[] { current.Row + move[0], current.Col + move[1] }; if ((newMove[0] > -1 && newMove[0] < n) && (newMove[1] > -1 && newMove[1] < m) && (visited[newMove[0], newMove[1]] == false)) //&& (matrix[newMove[0]][newMove[1]] == '*' || matrix[newMove[0]][newMove[1]] == 'd')) { q.Enqueue(new QItem(newMove[0], newMove[1], current.Total + 1)); visited[newMove[0], newMove[1]] = true; } } } } if (min != int.MaxValue) { result = min; } } return(result); }
public static int GetShortestDistanceBetweenTwoPoints(char[,] input) { if (input == null) { return(-1); } int rowMax = input.GetLength(0); int colMax = input.GetLength(1); bool[,] visited = new bool[rowMax, colMax]; QItem source = null; //Find Source for (int i = 0; i < rowMax; i++) { for (int j = 0; j < colMax; j++) { if (input[i, j] == 'S') { source = new QItem(i, j, 0); break; } if (input[i, j] == '0') { visited[i, j] = true; } } } if (source == null) { return(-1); } Queue <QItem> queue = new Queue <QItem>(); queue.Enqueue(source); while (queue.Count > 0) { var current = queue.Dequeue(); if (input[current.Row, current.Col] == 'D') { return(current.Dist); } //Up if (current.Row - 1 >= 0 && !visited[current.Row - 1, current.Col]) { queue.Enqueue(new QItem(current.Row - 1, current.Col, current.Dist + 1)); visited[current.Row - 1, current.Col] = true; } //Down if (current.Row + 1 < rowMax && !visited[current.Row + 1, current.Col]) { queue.Enqueue(new QItem(current.Row + 1, current.Col, current.Dist + 1)); visited[current.Row + 1, current.Col] = true; } //Left if (current.Col - 1 >= 0 && !visited[current.Row, current.Col - 1]) { queue.Enqueue(new QItem(current.Row, current.Col - 1, current.Dist + 1)); visited[current.Row, current.Col - 1] = true; } //Right if (current.Col + 1 < colMax && !visited[current.Row, current.Col + 1]) { queue.Enqueue(new QItem(current.Row, current.Col + 1, current.Dist + 1)); visited[current.Row, current.Col + 1] = true; } } return(-1); }
public int MinDistanceInMatrix(char[][] grid) { QItem source = new QItem(0, 0, 0); int n = grid.Length; bool[][] visited = new bool[n][]; for (int i = 0; i < n; i++) { visited[i] = new bool[n]; } for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) { var cell = grid[row][col]; if (cell == '0') { visited[row][col] = true; } else if (cell == 's') { source.Row = row; source.Col = col; } } } Queue <QItem> q = new Queue <QItem>(); q.Enqueue(source); while (q.Count > 0) { var current = q.Dequeue(); if (grid[current.Row][current.Col] == 'd') { return(current.Distance); } //up if (current.Row - 1 >= 0 && visited[current.Row - 1][current.Col] == false) { q.Enqueue(new QItem(current.Row - 1, current.Col, current.Distance + 1)); visited[current.Row - 1][current.Col] = true; } //down if (current.Row + 1 < n && visited[current.Row + 1][current.Col] == false) { q.Enqueue(new QItem(current.Row + 1, current.Col, current.Distance + 1)); visited[current.Row + 1][current.Col] = true; } //left if (current.Col - 1 >= 0 && visited[current.Row][current.Col - 1] == false) { q.Enqueue(new QItem(current.Row, current.Col - 1, current.Distance + 1)); visited[current.Row][current.Col - 1] = true; } //right if (current.Col + 1 < n && visited[current.Row][current.Col + 1] == false) { q.Enqueue(new QItem(current.Row, current.Col + 1, current.Distance + 1)); visited[current.Row][current.Col + 1] = true; } } return(-1); }
private void pesquisarButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; // //resultadoDGV.Rows.Clear(); QItem queryData1 = new QItem(null, null); QItem queryData2 = new QItem(null, null); QItem queryCodigo = new QItem(null, null); QItem queryClienteNome = new QItem(null, null); QItem queryFormaPagamento = new QItem(null, null); //dataEntrega if (this.dataInicioDTP.Text != "") { queryData1 = new QItem("dataMenor", this.dataInicioDTP.Value.ToString("yyyy-MM-dd")); } else { queryData1 = new QItem(null, null); } if (this.dataTerminoDTP.Text != "") { queryData2 = new QItem("dataMaior", this.dataTerminoDTP.Value.ToString("yyyy-MM-dd")); } else { queryData2 = new QItem(null, null); } //codigo if (this.codigoTB.Text != "") { queryCodigo = new QItem("v.id", this.codigoTB.Text); } else { queryCodigo = new QItem(null, null); } //cliente if (this.clienteNomeTB.Text != "") { //queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text); long id; if (long.TryParse(this.clienteNomeTB.Text, out id)) { queryClienteNome = new QItem("c.id", id); } else { queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text); } } else { queryClienteNome = new QItem(null, null); } //formaPagamento if (this.avistaRB.Checked == true) { queryFormaPagamento = new QItem("v.formaPagamento", "avista"); } if (this.chequeRB.Checked == true) { queryFormaPagamento = new QItem("v.formaPagamento", "cheque"); } if (this.cartaoRB.Checked == true) { queryFormaPagamento = new QItem("v.formaPagamento", "cartao"); } if (this.aprazoRB.Checked == true) { queryFormaPagamento = new QItem("v.formaPagamento", "aprazo"); } if (this.noFormaPagamentoRB.Checked == true) { queryFormaPagamento = new QItem(null, null); } List <Library.Venda> vendas = Library.VendaBD.FindAdvanced(queryData1, queryData2, queryCodigo, queryClienteNome, queryFormaPagamento); toolStripStatusLabel2.Text = vendas.Count + " linhas."; //ColumnCliente.DisplayMember = "Nome"; //ColumnCliente.CellTemplate. resultadoDGV.AutoGenerateColumns = false; resultadoDGV.DataSource = vendas; /* * if (vendas != null) * { * foreach (Library.Venda v in vendas) * { * string fp = ""; * * if (v.FormaPagamento == "avista") * fp = "À vista"; * if (v.FormaPagamento == "aprazo") * fp = "À prazo"; * if (v.FormaPagamento == "cartao") * fp = "Cartão"; * if (v.FormaPagamento == "cheque") * fp = "Cheque"; * * //resultadoDGV.Rows.Add(v.Id, v.Cliente.Nome, fp, v.Data); * * } * }*/ // this.Cursor = Cursors.Default; }