题解 P2089 【烤鸡】

#include<bits/stdc++.h>
using namespace std;
int n,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,ans;
int main(){
    scanf("%d",&n);
    if(n>30||n<10){
        printf("0");
        return 0;
    }//因为最大每种放三克,若大于3*10或小于1*10,即大于30或小于10均不满足
    for(i1=1;i1<=3;i1++)
        for(i2=1;i2<=3;i2++)
            for(i3=1;i3<=3;i3++)
                for(i4=1;i4<=3;i4++)
                    for(i5=1;i5<=3;i5++)
                        for(i6=1;i6<=3;i6++)
                            for(i7=1;i7<=3;i7++)
                                for(i8=1;i8<=3;i8++)
                                    for(i9=1;i9<=3;i9++)
                                        for(i10=1;i10<=3;i10++)
                                            if(i1+i2+i3+i4+i5+i6+i7+i8+i9+i10==n)
                                                ans++;//枚举,3^10不会超时,若和满足,答案加一
    printf("%d",ans);
    for(i1=1;i1<=3;i1++)
        for(i2=1;i2<=3;i2++)
            for(i3=1;i3<=3;i3++)
                for(i4=1;i4<=3;i4++)
                    for(i5=1;i5<=3;i5++)
                        for(i6=1;i6<=3;i6++)
                            for(i7=1;i7<=3;i7++)
                                for(i8=1;i8<=3;i8++)
                                    for(i9=1;i9<=3;i9++)
                                        for(i10=1;i10<=3;i10++)//继续枚举一次,输出答案,因为要输出总数和方案,上面先求总数,这里再输出方案
                                            if(i1+i2+i3+i4+i5+i6+i7+i8+i9+i10==n)
                                                printf("\n%d %d %d %d %d %d %d %d %d %d",i1,i2,i3,i4,i5,i6,i7,i8,i9,i10);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/SeashellBaylor/p/11079657.html
今日推荐