1 条题解
-
0
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
- 上传者