首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

uva639(放车有关问题)-回溯法

2013-03-27 
uva639(放车问题)-回溯法#includestdio.hchar s[8]int map[5][5],nint ok(int a,int b){for(int iai

uva639(放车问题)-回溯法

#include<stdio.h>char s[8];int map[5][5],n;int ok(int a,int b){for(int i=a;i>=0;i--)if(map[i][b]<0) return 0;else if(map[i][b]==0) break;for(int j=b;j>=0;j--)if(map[a][j]<0) return 0;else if(map[a][j]==0) break;return 1;}int dfs(int i,int j){int max=0,count=0;while(i<n){if(map[i][j]&&ok(i,j)){map[i][j]=-1;count=dfs(i,j+1)+1;if(max<count) max=count;map[i][j]=1;}if(j>=n-1){i++;j=0;}else j++;}return max;}int main(){int i,j;while(scanf("%d",&n)==1&&n){for(i=0;i<n;i++){scanf("%s",s);for(j=0;j<n;j++)if(s[j]=='.') map[i][j]=1;else if(s[j]=='X') map[i][j]=0;}printf("%d\n",dfs(0,0));}return 0;}


 

热点排行