【PAT甲级】1128 N Queens Puzzle (20分)
题意:
输入一个正整数K(<=200),接着输入K行,第一个数为N(<=1000),后来跟着N个整数(1~N)表示第i列皇后的所在行数,所有的皇后不在一列,输出是否所有的皇后不会相互攻击。
trick:
N^2/2不会超时,N^2会在最后一个测试点超时。
AAAAAccepted code:
1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 int a[1007]; 5 int main(){ 6 ios::sync_with_stdio(false); 7 cin.tie(NULL); 8 cout.tie(NULL); 9 int t; 10 cin>>t; 11 while(t--){ 12 int n; 13 cin>>n; 14 int flag=0; 15 for(int i=1;i<=n;++i){ 16 cin>>a[i]; 17 for(int j=1;j<i;++j){ 18 int temp=i-j; 19 int x=a[i]+temp; 20 int y=a[i]-temp; 21 if(a[j]==x||a[j]==y||a[j]==a[i]) 22 flag=1; 23 } 24 } 25 if(flag) 26 cout<<"NO\n"; 27 else 28 cout<<"YES\n"; 29 } 30 return 0; 31 }
保持热爱 不懈努力
不试试看怎么知道会失败呢(划掉)
世上无难事 只要肯放弃(划掉)