老鼠吃奶酪。

来源:互联网 发布:c语言float怎么用 编辑:程序博客网 时间:2024/04/27 15:11
#include <iostream>#include <cstdio>#include <vector>#include <queue>using namespace std;struct PP //位置结构体{int x;int y;}te, nt;int grid[100][100];int isPath(int m,int n)//int isPath(int **grid, int m, int n){int dirx[] = { 1,0,-1,0 };//方向 移动标志int diry[] = { 0,1,0,-1 };int i;te.x = 0; te.y = 0;//左上角的0,0位置开始 if (grid[0][0] == 0) return 0;//全局数组 访问标志 visqueue<PP> q;q.push(te);vector<vector<int > >vis;vector<int> temp;for (i = 0; i < n; i++) {temp.push_back(0);}for (i = 0; i< m; i++) {vis.push_back(temp);}vis[te.x][te.y] = 1;while (q.size() >= 1){te = q.front();//取点if (grid[te.x][te.y] == 9) return 1;q.pop();for (i = 0; i < 4; i++) {nt.x = te.x + dirx[i];nt.y = te.y + diry[i];if (nt.x < 0 || nt.x >= m || nt.y < 0 || nt.y >= n || grid[nt.x][nt.y] == 0 || vis[nt.x][nt.y] == 1) {continue;}else {q.push(nt);vis[nt.x][nt.y] = 1;}}}return 0;}int main(){//freopen("in.txt", "r", stdin);int m, n, re;char *a = "";int *b = NULL;int i, j;//while (scanf("%d%d", &m, &n) != EOF)cin >> m >> n;{printf("%d\n", m);for (i = 0; i<m; i++) {for (j = 0; j<n; j++) {//scanf("%d", &grid[i][j]);cin >> grid[i][j];}}re = isPath(m, n);printf("%d\n", re);}cout << "Hello world!" << endl;return 0;}

0 0