社区讨论

关于数据范围

P1219[USACO1.5] 八皇后 Checker Challenge参与者 5已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mi7ckuvv
此快照首次捕获于
2025/11/20 19:28
4 个月前
此快照最后确认于
2025/11/20 19:28
4 个月前
查看原帖
题目中数组范围为 n<=13
但是如果数组的空间 开辟为 17 最后一个点会WA 改成100 就过了 ,想不通 dalao能不能点拨一下 orz
下面是题目原代码
CPP



#include<iostream>
using namespace std;
int n;
int total;
int a[100];  //  这个地方如果开成a[17]
int b[100];             //     b[17]
int c[100];             //      c[17]
int ans[100];           //    ans[17]就WA了

void _print()
{
   if(total<=2)
   {
   	for(int i=1;i<=n;i++)
   	{
   		cout<<ans[i]<<" ";
   	}
   	cout<<endl;
   }
   total++;
}

void dfs(int k)
{
   for(int i=1;i<=n;i++)
   {
   	if(!a[i]&&!b[k+i]&&!c[k-i+n])
   	{
   		ans[k]=i;
   		a[i]=1;
   		b[k+i]=1;
   		c[k-i+n]=1;
   		if(k==n)
   		{
   			_print();
   		}else
   		{
   			dfs(k+1);
   		}
   		//ans[k]=0;
   		a[i]=0;
   		b[k+i]=0;
   		c[k-i+n]=0;
   	}
   }
}

int main()
{
   cin>>n;
   dfs(1);
   cout<<total;
   return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...