在这里说一句,这题的输出真蛋疼。。。因为输出的问题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;
}