编辑
2023-10-22
数据结构与算法
00
请注意,本文编写于 566 天前,最后修改于 566 天前,其中某些信息可能已经过时。
cpp
#include<iostream> #include<cstdio> using namespace std; int n,ans1,ans2[10001][11],sum,a[11]; void trys(int t,int m)//t代表当前的尝试的调料。m代表当前美味程度 { if (t>10) { if (m==n) //如果美味程度与猪猪的要求相等 { ans1++;//统计方案总数 for (int i=1;i<=10;i++) ans2[ans1][i]=a[i];//存入答案的数组 } return ; } for (int i=1;i<=3;i++) { if (m+i>n) break;//如果超过了要求,那么后面的就可以直接忽略 a[t]=i;//储存答案 trys(t+1,m+i);//查看下一种调料 a[t]=0;//状态恢复 } } int main() { cin>>n; trys(1,0);//从第一种调料开始尝试,美味程度为0 cout<<ans1<<endl; for (int i=1;i<=ans1;i++) { for (int j=1;j<=10;j++) cout<<ans2[i][j]<<" "; cout<<endl; }//输出结果 return 0; } // #include<iostream> using namespace std; int s,t,n; int a[11]; int b[10000][11];//一个二维数组,先出方案总数很难做呀 int c=1; int num; void ss(int k); void pp(); int main() { cin>>n; ss(1); cout<<num<<endl; for(int i=1; i<c; i++) { for(int j=1; j<=10; j++) { cout<<b[i][j]<<" "; } cout<<endl; } } void ss(int k) { for(int i=1; i<=3; i++)//每个只能加1,或2或3 { s+=i; a[k]=i; if(k==10) { if(s==n)pp(); } else ss(k+1); s-=i;//回溯 } } void pp() { num++; for(int i=1; i<=10; i++) b[c][i]=a[i];//存数组 c++; } // STL #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int b3[10]={0,1,2,3,4,5,6,7,8,9};//打表 int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); int co=0; do{ int a1=100*b3[1]+10*b3[2]+b3[3];//第一个数 int b1=100*b3[4]+10*b3[5]+b3[6];//第二个数 int c1=100*b3[7]+10*b3[8]+b3[9];//第三个数 if((a1*b==b1&&a1*c==c1)||(a1==a&&b1==b&&c1==c)){//判断 co++; printf("%d %d %d\n",a1,b1,c1);//输出 } } while(next_permutation(b3+1,b3+10)); if(co==0){ printf("No!!!"); } return 0; }

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!