解题思路:典型深搜
注意事项:
注意先输入列再输入行
参考代码:
#include<iostream> #include<cstring> using namespace std; struct Node { int status = 0; int value = 0; }visit[10][10]; int dfs(int, int, int, int); int count = 0; int counter = 0; int num[50]; int r, c; int min1 = 10000; int deep; int main() { cin >> c >> r; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { cin >> visit[i][j].value; counter += visit[i][j].value; } } dfs(0, 0, 0, 1); if (min1 == 10000) { cout << 0; return 0; } cout << min1; return 0; } int dfs(int x, int y, int count, int deep) { if (visit[x][y].status == 1) { return 0; } visit[x][y].status = 1; count += visit[x][y].value; if (count == counter/2) { if (deep < min1) { min1 = deep; } return 1; } for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { if (i == x + 1 && j == y&&visit[i][j].status == 0 && visit[i][j].value + count <= counter) { dfs(i, j, count, deep + 1); } if (i == x && (j == y + 1 || j == y - 1) && visit[i][j].status == 0 && visit[i][j].value + count <= counter) { dfs(i, j, count, deep + 1); } if (i == x - 1 && j == y&&visit[i][j].status == 0 && visit[i][j].value + count <= counter) { dfs(i, j, count, deep + 1); } } } visit[x][y].status = 0; count -= visit[x][y].value; return 0; }
0.0分
0 人评分
明明的随机数 (C++代码)浏览:818 |
求圆的面积 (C++代码)这里推荐使用宏定义浏览:1909 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:688 |
【出圈】 (C语言代码)浏览:796 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:586 |
剪刀石头布 (C语言代码)浏览:1753 |
C语言训练-自由落体问题 (C语言代码)浏览:615 |
关于float,double变量的几点说明浏览:1810 |
矩阵乘方 (C语言代码)浏览:1030 |
陈教主的三角形 (C语言代码)浏览:1143 |