http://acm.hdu.edu.cn/showproblem.php?pid=2510
dfs打表。
#include<iostream> #include<cstdio> using namespace std; //int ans[26] = {0},a[26][26]; // //void dfs(int n,int sum) //{ // if(n > 24) return; // for(int i = 0;i < 2;i++) // { // a[1][n] = i; // int s = i+sum; // for(int j = 2;j <= n;j++) // { // a[j][n] = a[j-1][n]^a[j-1][n-1]; // s += a[j][n]; // } // if((1+n)*n == s*4) ans[n]++; // dfs(n+1,s); // } //} //int main() //{ // dfs(1,0); // for(int i = 1;i <= 24;i++) printf("%d ",ans[i]); // return 0; //} int main() { int ans[] = {0, 0, 0, 4, 6, 0, 0, 12, 40, 0, 0, 171, 410, 0, 0, 1896, 5160, 0, 0, 32757, 59984, 0, 0, 431095, 822229}; int n; while(cin >> n && n) cout << n << ‘ ‘ << ans[n] << endl; return 0; }
时间: 2024-10-12 20:34:47