题解 P1157 【组合的输出】
打表法天下第一(逃
洛谷最近规定要查打表(参见:关于近段时间经常出现的打表的说明),不过这样应该不会棕名吧...
#include<iostream>
#include<iomanip>
using namespace std;
int nn,rr;
///nn和rr分别表示题目说明中的n和r,双写是怕打表时变量重名
int main()
{
cin>>nn>>rr;
///显然,rr的大小决定了循环层数,所以对rr使用switch就可以完成打表
switch(rr)
{
///每次组合时的数字从左到右按顺序依次是a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u
case 1:
{
for(int a=1;a<=nn;a++)
cout<<setw(3)<<a<<endl;
break;
}
case 2:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
cout<<setw(3)<<a<<setw(3)<<b<<endl;
break;
}
case 3:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<endl;
break;
}
case 4:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<endl;
break;
}
case 5:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<endl;
break;
}
case 6:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<endl;
break;
}
case 7:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<endl;
break;
}
case 8:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<endl;
break;
}
case 9:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<endl;
break;
}
case 10:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<endl;
break;
}
case 11:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<endl;
break;
}
case 12:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<endl;
break;
}
case 13:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
for(int m=l+1;m<=nn;m++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<endl;
break;
}
case 14:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
for(int m=l+1;m<=nn;m++)
for(int n=m+1;n<=nn;n++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<setw(3)<<n<<endl;
break;
}
case 15:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
for(int m=l+1;m<=nn;m++)
for(int n=m+1;n<=nn;n++)
for(int o=n+1;o<=nn;o++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<setw(3)<<n<<setw(3)<<o<<endl;
break;
}
case 16:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
for(int m=l+1;m<=nn;m++)
for(int n=m+1;n<=nn;n++)
for(int o=n+1;o<=nn;o++)
for(int p=o+1;p<=nn;p++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<setw(3)<<n<<setw(3)<<o<<setw(3)<<p<<endl;
break;
}
case 17:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
for(int m=l+1;m<=nn;m++)
for(int n=m+1;n<=nn;n++)
for(int o=n+1;o<=nn;o++)
for(int p=o+1;p<=nn;p++)
for(int q=p+1;q<=nn;q++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<setw(3)<<n<<setw(3)<<o<<setw(3)<<p<<setw(3)<<q<<endl;
break;
}
case 18:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
for(int m=l+1;m<=nn;m++)
for(int n=m+1;n<=nn;n++)
for(int o=n+1;o<=nn;o++)
for(int p=o+1;p<=nn;p++)
for(int q=p+1;q<=nn;q++)
for(int r=q+1;r<=nn;r++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<setw(3)<<n<<setw(3)<<o<<setw(3)<<p<<setw(3)<<q<<setw(3)<<r<<endl;
break;
}
case 19:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
for(int m=l+1;m<=nn;m++)
for(int n=m+1;n<=nn;n++)
for(int o=n+1;o<=nn;o++)
for(int p=o+1;p<=nn;p++)
for(int q=p+1;q<=nn;q++)
for(int r=q+1;r<=nn;r++)
for(int s=r+1;s<=nn;s++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<setw(3)<<n<<setw(3)<<o<<setw(3)<<p<<setw(3)<<q<<setw(3)<<r<<endl;
break;
}
case 20:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
for(int m=l+1;m<=nn;m++)
for(int n=m+1;n<=nn;n++)
for(int o=n+1;o<=nn;o++)
for(int p=o+1;p<=nn;p++)
for(int q=p+1;q<=nn;q++)
for(int r=q+1;r<=nn;r++)
for(int s=r+1;s<=nn;s++)
for(int t=s+1;t<=nn;t++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<setw(3)<<n<<setw(3)<<o<<setw(3)<<p<<setw(3)<<q<<setw(3)<<r<<setw(3)<<t<<endl;
break;
}
case 21:
{
for(int a=1;a<=nn;a++)
for(int b=a+1;b<=nn;b++)
for(int c=b+1;c<=nn;c++)
for(int d=c+1;d<=nn;d++)
for(int e=d+1;e<=nn;e++)
for(int f=e+1;f<=nn;f++)
for(int g=f+1;g<=nn;g++)
for(int h=g+1;h<=nn;h++)
for(int i=h+1;i<=nn;i++)
for(int j=i+1;j<=nn;j++)
for(int k=j+1;k<=nn;k++)
for(int l=k+1;l<=nn;l++)
for(int m=l+1;m<=nn;m++)
for(int n=m+1;n<=nn;n++)
for(int o=n+1;o<=nn;o++)
for(int p=o+1;p<=nn;p++)
for(int q=p+1;q<=nn;q++)
for(int r=q+1;r<=nn;r++)
for(int s=r+1;s<=nn;s++)
for(int t=s+1;t<=nn;t++)
for(int u=t+1;u<=nn;u++)
cout<<setw(3)<<a<<setw(3)<<b<<setw(3)<<c<<setw(3)<<d<<setw(3)<<e<<setw(3)<<f<<setw(3)<<g<<setw(3)<<h<<setw(3)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<setw(3)<<n<<setw(3)<<o<<setw(3)<<p<<setw(3)<<q<<setw(3)<<r<<setw(3)<<t<<setw(3)<<u<<endl;
break;
}
}
return 0;
}