1.循环枚举
for(int a=1;a<=3;a++){ for(int b=1;b<=3;b++){ for(int c=1;c<=3;c++){ for(int d=1;d<=3;d++){ for(int e=1;e<=3;e++){ for(int f=1;f<=3;f++){ for(int g=1;g<=3;g++){ for(int h=1;h<=3;h++){ for(int i=1;i<=3;i++){ for(int j=1;j<=3;j++){ if(a+b+c+d+e+f+g+h+i+j==n)ans++; } } } } } } } } } }
2.子集枚举
for(int S=0;S<1<<n;S++){ if(__builtin_popcount(S)==k){ int sum=0; for(int i=0;i<n;i++)if(S&(1<<i))sum+=a[i]; if(isPrime(sum))ans++; } }
3.排列枚举
int a[10],n; int main(){ cin>>n; for(int i=1;i<=n;i++)a[i]=i; do{ for(int i=1;i<=n;i++)printf("%5d",a[i]); cout<<'\n'; }while(next_permutation(a+1,a+n+1)); return 0; }
标签:10,int,cin,枚举,子集,main From: https://www.cnblogs.com/zhanghx-blogs/p/17170771.html