读题可以知道是DFS,注意一点,题目说的是赢过,所以str[i][j]=‘W',那么g[i][j]=1,str[i][j]='L',g[j][i]=1
然后就常规搜索即可,还有一点就是剪枝,如果没有可以回到0的点,就直接返回。
1 #include2 using namespace std; 3 4 int n,g[30][30],tmp[30],flag,vis[30]; 5 char str[30][30]; 6 7 void dfs(int k,int step) { 8 if(flag) return; 9 tmp[step]=k+1;10 if(step==n-1) {11 if(g[k][0]) {12 flag=1;13 return;14 }15 }16 int i;17 for(i=1;i