p2089烤鸡,模拟,数据存储
这个题目就是烦在先要说出总数,再把具体数据打出来
所以在遍历的时候用个二维数组存好数据
然后得到总数后吧二维数组打出来
#include <bits/stdc++.h> using namespace std; int sum=0; int n; int num[10000][10],cnt,res[10]; void find(int a){ if(sum>n) return; if(a==10){ if(sum==n){ for(int i=0;i<10;i++) num[cnt][i]=res[i]; cnt++; } }else{ for(int i=1;i<=3;i++){ sum+=i; res[a]=i; find(a+1); sum-=i; } } } int main(int argc, char** argv) { cin>>n; if(n<10||n>30) cout<<0<<endl; else{ find(0); cout<<cnt<<endl; for(int i=0;i<cnt;i++){ for(int j=0;j<10;j++){ printf("%d ",num[i][j]); } puts(""); } } return 0; }
测试数据显示我有个用了1mb 的空间,有点危险