为什么会RE呢
  • 板块灌水区
  • 楼主lolali
  • 当前回复2
  • 已保存回复3
  • 发布时间2023/12/30 20:37
  • 上次更新2023/12/30 22:59:40
查看原帖
为什么会RE呢
874096
lolali楼主2023/12/30 20:37

题目

#include <bits/stdc++.h>
//#pragma GCC optimize(2)

using namespace std;

int n,m,r[105],c[105];
bool ans[105][105],flag=false;

bool rt()
{
	int cnt;
	for (int i=1;i<=n;i++)
	{
		cnt=0;
		for (int j=1;j<=m;j++)
		{
			if (ans[i][j]) cnt++;
			cout<<i<<" "<<j<<endl;
		}
		if (cnt!=r[i]) return false;
	}
	return true;
}

bool ct()
{
	for (int i=1;i<=m;i++)
	{
		int cnt=0;
		for (int j=1;j<=n;j++)
		{
			if (ans[j][i]) cnt++;
			cout<<i<<" "<<j<<endl;
		}
		cout<<cnt<<"! !"<<c[i]<<endl;
		if (cnt!=c[i]) return false;
	}
	return true;
}

void dfs(int x,int y,int num)
{
	ans[x][y]=num;
	if (x==n&&y==m)
	{
		if (rt()&&ct())
		{
			flag=true;
		}
	}
	if (flag) return;
	if (y==m)
	{
		dfs(x+1,1,0);
		if (flag) return;
		dfs(x+1,1,1);
		if (flag) return;
	}
	else
	{
		dfs(x,y+1,0);
		if (flag) return;
		dfs(x,y+1,1);
		if (flag) return;
	}
	ans[x][y]=0;
}

int main()
{
	/*ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);*/
    cin>>n>>m;
    for (int i=1;i<=n;i++) cin>>r[i];
    for (int i=1;i<=m;i++) cin>>c[i];
    dfs(1,1,0);
    for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=m;j++)
		{
			cout<<ans[i][j];
		}
		cout<<endl;
	}

	return 0;
}

第35行会卡住

2023/12/30 20:37
加载中...