ZOJ 1089 Lotto 请叫我循环狂魔 ! 六重循环AC

来源:互联网 发布:软件项目开发计划书 编辑:程序博客网 时间:2024/06/10 10:57

在这里说一句,这题的输出真蛋疼。。。因为输出的问题PE 了5次。  要把每一次案例输出的结果,额外多一个换行与其他的区别开来,但是最后一个以 0 结束输入的,他之前不能有换行。


题目要求是字典序输出,查了其他六重循环的其他题解,发现他们有些没有 先排序,那么当输入 7 6 5 4 3 2 1 的时候,输出就是7打头,而不是字典序从小到大输出的。但是可能是 数据给的都是字典序数据,所以没有排序的也能过。   但是万无一失还是要加上sort 先排序一遍从小到大。




#include<iostream>#include<algorithm>#include <cstdio>using namespace std;//int fac(int n)//{//    int ans=1;//    for(int i=1;i<=n;i++)//        ans *= i;//    return ans;//}int main(){    int test;    int newline = 1;    bool flag = false;    while(cin>>test && test)    {        if(flag)            cout<<"\n";        int *num = new int [test];        for(int i=0;i<test;i++)            cin>>num[i];        int all = fac(test)/(fac(6)*fac(test-6));        int cnt = 0;        sort(num,num+test);        int i_1,i_2,i_3,i_4,i_5,i_6;        for(i_1=0; i_1<test; i_1++)            for(i_2=i_1+1; i_2<test;i_2++)                for(i_3=i_2+1; i_3<test;i_3++)                    for(i_4=i_3+1; i_4<test;i_4++)                        for(i_5=i_4+1; i_5<test;i_5++)                            for(i_6=i_5+1; i_6<test;i_6++)                                {                                        cout<<num[i_1]<<" "<<num[i_2]<<" "<<num[i_3]<<" "<<num[i_4]<<" "<<num[i_5]<<" "<<num[i_6];//                                        cnt++;                                        cout<<"\n";                                }        flag = true;    }    return 0;}


0 0
原创粉丝点击