不知道为什么一直输出0
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, m, k, a[25][25];
map<int,int> mp[25];
int sum=0, ans;
void dfs(int x, int y)
{
if(x+y==(n+m)/2+1)
{
mp[x][k^sum^a[x][y]]++;
return ;
}
sum^=a[x][y];
if(x<n)dfs(x+1,y);
if(y<m)dfs(x,y+1);
sum^=a[x][y];
}
void dfs1(int x, int y)
{
if(x+y==(n+m)/2+1)
{
ans+=mp[x][sum^k];
return ;
}
sum^=a[x][y];
if(x>1)dfs(x-1,y);
if(y>1)dfs(x,y-1);
sum^=a[x][y];
}
signed main()
{
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
sum=a[1][1];
dfs(1,1);
sum=a[n][m];
dfs1(n,m);
cout<<ans;
}