存题(搜索)
作者:互联网
1.
aoj 0033:https://onlinejudge.u-aizu.ac.jp/problems/0033
1 #include<bits/stdc++.h>//AOJ 0033 2 using namespace std; 3 int ball[11]; 4 bool flag; 5 void Dfs(int cnt,int left,int right) 6 { 7 if(flag) return; 8 if(cnt==10) 9 { 10 flag=true; 11 return; 12 } 13 14 if(ball[cnt]>left) 15 Dfs(cnt+1,ball[cnt],right); 16 if(ball[cnt]>right) 17 Dfs(cnt+1,left,ball[cnt]); 18 } 19 20 int main() 21 { 22 int t; 23 while(scanf("%d",&t)==1) 24 { 25 while(t--){ 26 flag=false; 27 for(int i=0;i<10;i++) 28 cin>>ball[i]; 29 Dfs(0,0,0); 30 if(flag) 31 cout<<"YES"<<endl; 32 else 33 cout<<"NO"<<endl; 34 } 35 } 36 return 0; 37 }
2.aoj 0525:https://onlinejudge.u-aizu.ac.jp/problems/0525
1 #include<bits/stdc++.h> aoj 0525 2 using namespace std; 3 int r,c; 4 int a[20][10010]; 5 int ans; 6 void dfs(int step) 7 { 8 if(step==r+1) 9 { 10 int sum=0; 11 int tmp=0; 12 for(register int j=1;j<=c;j++) 13 { 14 for(register int i=1;i<=r;i++) 15 { 16 if(a[i][j]==1) 17 { 18 tmp++; 19 } 20 } 21 sum+=max(tmp,r-tmp); 22 tmp=0; 23 } 24 ans=max(sum,ans); 25 return ; 26 } 27 dfs(step+1); 28 for(register int i=1;i<=c;i++) 29 a[step][i]=!a[step][i]; 30 dfs(step+1); 31 } 32 int main() 33 { 34 while(scanf("%d%d",&r,&c)!=EOF) 35 { 36 if(r==0&&c==0) 37 break; 38 memset(a,0,sizeof(a)); 39 ans=0; 40 for(register int i=1;i<=r;i++) 41 { 42 for(register int j=1;j<=c;j++) 43 { 44 cin>>a[i][j]; 45 } 46 } 47 dfs(1); 48 cout<<ans<<endl; 49 } 50 return 0; 51 }
3. poj 3187
http://poj.org/problem?id=3187
1 #include<iostream>//poj 3187 2 #include<cstdio> 3 #include<cmath> 4 #include<queue> 5 #include<vector> 6 #include<algorithm> 7 using namespace std; 8 int n,sum; 9 int a[20]; 10 int b[20]; 11 int main() 12 { 13 scanf("%d %d",&n,&sum); 14 for(register int i=1;i<=n;i++) 15 { 16 a[i]=i; 17 } 18 do{ 19 int tmp=n; 20 for(register int i=1;i<=n;i++) 21 { 22 b[i]=a[i]; 23 } 24 while(tmp!=1) 25 { 26 for(register int i=1;i<tmp;i++) 27 { 28 b[i]=b[i]+b[i+1]; 29 } 30 tmp--; 31 } 32 if(b[1]==sum) 33 break; 34 }while(next_permutation(a+1,a+1+n)); 35 for(register int i=1;i<=n;i++) 36 { 37 cout<<a[i]<<" "; 38 } 39 return 0; 40 }
标签:cnt,ball,20,int,flag,存题,搜索,include 来源: https://www.cnblogs.com/LQS-blog/p/16450704.html