求条
查看原帖
求条
941575
Stars_visitor_tyw楼主2024/10/14 14:40

不知道为什么一直输出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;
}
2024/10/14 14:40
加载中...