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 许可协议。转载请注明出处!