这个代码到底有什么错啊???
[题目链接:例9.16 哈密尔顿回路] http://www.yuyaoi.cn:8000/contest/256/problem/1272
#include<bits/stdc++.h>
using namespace std;
long long n,m,i,j,k,x,y,f[15][15][1<<15];
bool a[20][20];
int main()
{
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
f[0][m][0]=1;
for(i=1;i<=n;i++)
{
for(j=0;j<(1<<m);j++)
f[i][0][j<<1]=f[i-1][m][j];
for(j=1;j<=m;j++)
for(k=0;k<(1<<m+1);k++)
{
x=(k>>j-1)&1;
y=(k>>j)&1;
if(!a[i][j]&&!x&&!y)
f[i][j][k]+=f[i][j-1][k];
else
if(!x&&!y&&a[i+1][j]&&a[i][j+1])
f[i][j][k^(1<<j)^(1<<j-1)]+=f[i][j-1][k];
else
if(x&&y&&a[i-1][j]&&a[i][j-1])
f[i][j][k^(1<<j)^(1<<j-1)]+=f[i][j-1][k];
else
if(!x&&y||x&&!y)
{
f[i][j][k^(1<<j)^(1<<j-1)]+=f[i][j-1][k];
f[i][j][k]+=f[i][j-1][k];
}
}
}
cout<<f[n][m][0]<<endl;
return 0;
}