5 solutions

  • 4
    @ 2024-8-2 15:43:28

    包对的

    #include<bits/stdc++.h>
    using namespace std;
    int a[20];
    int main()
    {
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		a[i]=i;
    		cout<<i<<" ";
    	}
    	cout<<endl;
    	while(1)
    	{
    		int k=n;
    		while(k-1>=1&&a[k-1]>a[k])
    		{
    			k--;
    		}
    		if(k==1)
    		{
    			break;
    		}
    		k--;
    		int t=n;
    		while(a[k]>a[t])
    		{
    			t--;
    		}
    		swap(a[k],a[t]);
    		reverse(a+k+1,a+n+1);
    		for(int i=1;i<=n;i++)
    		{
    			cout<<a[i]<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    
    • 0
      @ 2025-11-24 13:49:41
      #include<bits/stdc++.h>
      using namespace std;
      int main()
      {
      	int n;
      	cin>>n;
      	vector<int> v;
      	for(int i=1;i<=n;i++) v.push_back(i);
      	do{
      		for(auto x:v) cout<<x<<" ";
      		cout<<endl;
      	}while(next_permutation(v.begin(),v.end()));
      	return 0;
      }
      
      
      • -2
        @ 2024-7-12 11:27:31
        #include<bits/stdc++.h>
        using namespace std;
        const int N=20;
        int a[N];
        int main()
        {
        	int n;
        	scanf("%d",&n);
        	for(int i=1;i<=n;i++) a[i]=i;
        	for(int i=1;i<=n;i++) printf("%d ",a[i]);
        	printf("\n");
        	while(true)
        	{
        		int k=n;
        		while(k-1>=1&&a[k-1]>a[k]) k--;
        		if(k-1==0) break;
        		k=k-1;
        		int t=n;
        		while(a[k]>a[t]) t--;
        		swap(a[k],a[t]);
        		reverse(a+k+1,a+n+1);
        		for(int i=1;i<=n;i++)
        		{
        			printf("%d ",a[i]);
        		}
        		printf("\n");
        	}
            return 0;
        }
        
        • -3
          @ 2024-7-13 14:09:17
          #include<bits/stdc++.h>
          using namespace std;
          const int N=20;
          int a[N];
          int main()
          {
             int n;
             cin>>n;
             for(int i=1;i<=n;i++)
             {
                a[i]=i;
             }
             for(int i=1;i<=n;i++)
             {
                cout<<a[i]<<" ";
             }
             cout<<endl;
             while(true)
             {
                int k=n;
                while(k-1>=1&&a[k-1]>a[k]) //找到下降的位置
                {
                   k--;
                }
                if(k==1)                 //越界
                {
                   break;
                }
                k=k-1;                     //下降的位置
                int t=n;                   //从后找到第一个大于它的元素
                while(a[k]>a[t])           //小于就一直累加
                {
                   t--;
                }
                swap(a[k],a[t]);           //和最后一个比它大的交换
                reverse(a+k+1,a+n+1);      //逆序
                for(int i=1;i<=n;i++)
                { 
                   cout<<a[i]<<" ";
                }
                cout<<endl;
             }
             return 0;
          }
          
          • -4
            @ 2024-7-12 11:35:35
            #include<bits/stdc++.h>
            using namespace std;
            const int N=20;
            int a[N];
            int main()
            {
            	int n;
            	scanf("%d",&n);
            	for(int i=i;i<=n;i++)a[i]=i;
            	for(int i=1;i<=n;i++)printf("%d ",a[i]);
            	printf("\n");
            	while(true)
            	{
            		int k=n;
            		while(k-1>=1&&a[k-1]>a[k]) k--;
            		if(k-1==0)break;
            		k=k-1;
            		int t=n;
            		while(a[k]>a[t])t--;
            		swap(a[k],a[t]);
            		reverse(a+k+1,a+n+1);
            		for(int i=1;i<=n;i++)
            		{
            			printf("%d ",a[i]);
            		}
            		printf("\n");
            	}
            	return 0;
            }
            
            • 1

            Information

            ID
            191
            Time
            1000ms
            Memory
            256MiB
            Difficulty
            3
            Tags
            # Submissions
            78
            Accepted
            18
            Uploaded By