好像只能打表(大佬勿喷,我才六年纪)
by wangxx @ 2018-06-27 19:51:13
@[wangxx](/space/show?uid=81785)
哈哈,你才是大佬。我都大一了
by 小豆子范德萨 @ 2018-06-28 10:48:52
氧气优化【逃
by Ureka_Gestalt @ 2018-06-28 15:24:02
你每次进行查找
当前放置是否和之前放置的是否在一条对角线,在同一列上。都会用一个循环;
所以每查找+判断一个数就有13*13次循环
所以要用数组来进行判断
可以节省很多时间
我的代码给你参考下:
#include<bits/stdc++.h>
using namespace std;
int n;
int tot;
int a[30];
int vid[4][50];
int dfs(int v)
{
if(v>n)
{
if(tot<3)
{
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
tot++;
}
else
{
for(int i=1;i<=n;i++)
{
if(vid[1][i]==0&&vid[2][v+i]==0&&vid[3][v-i+15]==0)
{
vid[1][i]=vid[2][v+i]=vid[3][v-i+15]=1;
a[v]=i;
dfs(v+1);
vid[1][i]=vid[2][v+i]=vid[3][v-i+15]=0;
}
}
}
}
int main(){
cin>>n;
dfs(1);
cout<<tot;
return 0;
}
by LinAPro @ 2018-06-29 18:09:59
@[小豆子范德萨](/space/show?uid=82221)
by LinAPro @ 2018-06-29 18:10:29
@[silenceabu](/space/show?uid=68163)
谢谢,差不多知道了
by 小豆子范德萨 @ 2018-06-29 18:34:13
@[小豆子范德萨](/space/show?uid=82221) 不用谢,不会的问题可以一起讨论啊。
by LinAPro @ 2018-07-02 19:57:58
# 嗯......你的MAIN函数为什么写一个VOID??
by wxy_god @ 2018-07-19 09:14:04