|
直接暴力枚举,大概两万多次循环就搞定了,不会超时;
- #include<iostream>
- using namespace std;
- int i,j,k,l,m,n,o,p,q,r,s;
- int a[60000][11],ans;
- int main()
- {
- cin>>s;
- for(i=1; i<=3; i++)
- for(j=1; j<=3; j++)
- for(k=1; k<=3; k++)
- for(l=1; l<=3; l++)
- for(m=1; m<=3; m++)
- for(n=1; n<=3; n++)
- for(o=1; o<=3; o++)
- for(p=1; p<=3; p++)
- for(q=1; q<=3; q++)
- {
- r=s-i-j-k-l-m-n-p-o-q;
- if(1<=r && r<=3)
- {
- ans++;
- a[ans][1]=i;
- a[ans][2]=j;
- a[ans][3]=k;
- a[ans][4]=l;
- a[ans][5]=m;
- a[ans][6]=n;
- a[ans][7]=o;
- a[ans][8]=p;
- a[ans][9]=q;
- a[ans][10]=r;
- }
- }
- cout<<ans<<endl;
- for(i=1; i<=ans; i++)
- {
- for(j=1; j<=10; j++)
- cout<<a[i][j]<<" ";
- cout<<endl;
- }
- }
复制代码 |
|