标签:
Description
Input
Output
Sample Input
Sample Output
/* 注意:1:写死循环要么注意跳出条件,要么就别写 2: 复制粘贴的前面用的代码的时候一定记得把所有需要修改的条件都改了 */ #include <stdio.h> #include <string.h> using namespace std; int cnt, n; int vis[11][11]; void dfs(int x) { if(x == n+1) { cnt++; return; } for(int i = 1; i <= n; i++) //////////////////////////////////////// { if(!vis[x][i]) { for(int j = x; j <= n; j++) { vis[j][i]++; } for(int j = 1; 1; j++) { if(x+j <= n) { if(i+j <= n) vis[x+j][i+j]++; if(i - j >= 1) vis[x+j][i-j]++; } else break;////////////////////////////////////////////////////// } dfs(x+1); for(int j = x; j <= n; j++) vis[j][i]--; for(int j = 1; 1; j++) { if(x+j <= n) { if(i+j <= n) vis[x+j][i+j]--; if(i - j >= 1) vis[x+j][i-j]--; } else break;///////////////////////////////////////////////////////////////// } } } } int main() { int ans[11], i; memset(ans, 0, sizeof(ans)); for(i = 1; i <= 10; i++) { n = i; cnt = 0; memset(vis, 0, sizeof(vis)); dfs(1); ans[i] = cnt; //printf("ans[%d] = %d\n", i, ans[i]); } while(scanf("%d", &n), n) printf("%d\n", ans[n]); return 0; }
标签:
原文地址:http://www.cnblogs.com/rain-1/p/4975714.html