题解 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;
}