| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
渣渣代码一份#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define int long long
int dp[1<<13][13];
int cnt;
int N,M;
bool check(int x)
{
int flag = 0;
for(int i = 0;i < M;i++)
{
if((x&1) == 0) flag ++;
else if(flag%2 != 0) return false;
x >>= 1;
}
if(flag%2 != 0) return false;
return true;
}
main()
{
while(cin>>N>>M&&N+M)
{
memset(dp,0,sizeof(dp));
int res = 0;
int pres = 0;
for(int S = 0;S < 1<<M;++S) if(check(S)) {dp[S][0] = 1;if(!S) pres++;}
for(int i = 1;i < N-1;i++)
for(int S = 0;S < 1<<M;S++)
for(int pS = 0;pS < 1<<M;pS++)
if((pS&S) == 0 && check(S|pS)) dp[S][i] += dp[pS][i-1];
for(int S = 0;S < 1<<M;S++) if(check(S)) res += dp[S][N-2];
if(N==1) cout<<pres<<endl;
else cout<<res<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator