播种,唉,这道题想法一看就有,最长的那条dfs路,不过操作时很是令我难堪,刚开始:我想每各结点至多只走一步,肯定是一条dfs路,可惜,我没法保证结点走的那条路就是最优的那条,半天才看出这错误,后对dfs作一下小的剖析,似乎懂了,原理是记录:最长步数,然后判断。时间有限,打住
#include#include #include #include char s[10][10];int flag[10][10];int dir[4][2] = { {1,0},{-1,0},{0,1},{0,-1}};int m,n,num,ok;void dfs(int x,int y,int num){ flag[x][y] = num; if(num+1 == m*n) { ok = 1; } int i; for(i=0;i<4;i++) { int tx = x + dir[i][0]; int ty = y + dir[i][1]; if(tx>=0&&tx =0&&ty