1 条题解

  • 0
    @ 2023-6-11 12:16:43

    C :

    #include<stdio.h>
    int n;
    int main()
    {
    	int a[10]={0,999,888,777,666,555,444};
    	scanf("%d",&n);
    	if(n==1)
    	for(a[1]=1;a[1]<=n;a[1]++)
    	printf("%d",a[1]);
    	if(n==2)
    	for(a[1]=1;a[1]<=n;a[1]++)
    	for(a[2]=1;a[2]<=n;a[2]++)
    	if(a[1]!=a[2]&&a[1]!=a[3]&&a[1]!=a[4]&&a[1]!=a[5]&&a[1]!=a[6]&&a[2]!=a[3]&&a[2]!=a[4]&&a[2]!=a[5]&&a[2]!=a[6]&&a[3]!=a[4]&&a[3]!=a[5]&&a[3]!=a[6]&&a[4]!=a[5]&&a[4]!=a[6]&&a[5]!=a[6])
    	printf("%d %d\n",a[1],a[2]);
    	if(n==3)
    	for(a[1]=1;a[1]<=n;a[1]++)
    	for(a[2]=1;a[2]<=n;a[2]++)
    	for(a[3]=1;a[3]<=n;a[3]++)
    	if(a[1]!=a[2]&&a[1]!=a[3]&&a[1]!=a[4]&&a[1]!=a[5]&&a[1]!=a[6]&&a[2]!=a[3]&&a[2]!=a[4]&&a[2]!=a[5]&&a[2]!=a[6]&&a[3]!=a[4]&&a[3]!=a[5]&&a[3]!=a[6]&&a[4]!=a[5]&&a[4]!=a[6]&&a[5]!=a[6])
    	printf("%d %d %d\n",a[1],a[2],a[3]);
    	if(n==4)
    	for(a[1]=1;a[1]<=n;a[1]++)
    	for(a[2]=1;a[2]<=n;a[2]++)
    	for(a[3]=1;a[3]<=n;a[3]++)
    	for(a[4]=1;a[4]<=n;a[4]++)
    	if(a[1]!=a[2]&&a[1]!=a[3]&&a[1]!=a[4]&&a[1]!=a[5]&&a[1]!=a[6]&&a[2]!=a[3]&&a[2]!=a[4]&&a[2]!=a[5]&&a[2]!=a[6]&&a[3]!=a[4]&&a[3]!=a[5]&&a[3]!=a[6]&&a[4]!=a[5]&&a[4]!=a[6]&&a[5]!=a[6])
    	printf("%d %d %d %d\n",a[1],a[2],a[3],a[4]);
    	if(n==5)
    	for(a[1]=1;a[1]<=n;a[1]++)
    	for(a[2]=1;a[2]<=n;a[2]++)
    	for(a[3]=1;a[3]<=n;a[3]++)
    	for(a[4]=1;a[4]<=n;a[4]++)
    	for(a[5]=1;a[5]<=n;a[5]++)
    	if(a[1]!=a[2]&&a[1]!=a[3]&&a[1]!=a[4]&&a[1]!=a[5]&&a[1]!=a[6]&&a[2]!=a[3]&&a[2]!=a[4]&&a[2]!=a[5]&&a[2]!=a[6]&&a[3]!=a[4]&&a[3]!=a[5]&&a[3]!=a[6]&&a[4]!=a[5]&&a[4]!=a[6]&&a[5]!=a[6])
    	printf("%d %d %d %d %d\n",a[1],a[2],a[3],a[4],a[5]);
    	if(n==6)
    	for(a[1]=1;a[1]<=n;a[1]++)
    	for(a[2]=1;a[2]<=n;a[2]++)
    	for(a[3]=1;a[3]<=n;a[3]++)
    	for(a[4]=1;a[4]<=n;a[4]++)
    	for(a[5]=1;a[5]<=n;a[5]++)
    	for(a[6]=1;a[6]<=n;a[6]++)
    	if(a[1]!=a[2]&&a[1]!=a[3]&&a[1]!=a[4]&&a[1]!=a[5]&&a[1]!=a[6]&&a[2]!=a[3]&&a[2]!=a[4]&&a[2]!=a[5]&&a[2]!=a[6]&&a[3]!=a[4]&&a[3]!=a[5]&&a[3]!=a[6]&&a[4]!=a[5]&&a[4]!=a[6]&&a[5]!=a[6])
    	printf("%d %d %d %d %d %d\n",a[1],a[2],a[3],a[4],a[5],a[6]);
    	return 0;
    }
    

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int r[10000];
    int u;
    
    void dg(int list[],int k,int m){
    	if(k==m){
    		int num = 0;
    		int t = 1;
    		for(int i=m;i>=0;i--){
    			num = num + list[i] * t;
    			t = t * 10;
    		}
    		r[u] = num;
    		u++;
    	}
    	else{
    		for(int i=k;i<=m;i++){
    			// 从固定的数后第一次进行交换 
    			swap(list[k],list[i]);
    			//k+1:缩小数组长度 
    			dg(list,k+1,m);
    			//一组递归完以后交换回来 
    			swap(list[k],list[i]);
    		}
    	}
    	
    }
    
    int main(){
    	int n,i;
    	cin>>n;
    	int a[20];
    	for(i = 0;i < n;i++){
    		a[i] = i + 1;
    	}
    	
    	dg(a,0,n - 1);
    	sort(r,r + u);
    	int t[20],x,j,k;
    	for(i = 0;i < u;i++){
    		x = r[i];
    		k = 0;
    		while(x != 0){
    			t[k] = x % 10;
    			k++;
    			x = x / 10;
    		}
    		
    		for(j = k - 1;j >= 0;j--){
    			cout<<t[j]<<" ";
    		}
    		cout<<endl;
    	}
    }
    
    

    Python :

    import math
    import sys
    n=int(input())
    
    vis=[0]*(n+1)
    a=[0]*(n+1)
    
    def df(step):
        if step>n:
            for item in a[1:]:
                print(item,end=" ")
            print()
            return 
        for i in range(1,n+1):
            if vis[i]==0:
                a[step]=i
                vis[i]=1
                df(step+1)
                vis[i]=0
    df(1)
    
    
    • 1

    信息

    ID
    2228
    时间
    1000ms
    内存
    16MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者