最后一个测试点TLE

P1219 [USACO1.5] 八皇后 Checker Challenge

好像只能打表(大佬勿喷,我才六年纪)
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


|