K - 擅長排列的小明
阿新 • • 發佈:2019-01-04
#include<stdio.h> #include<string.h> int m,t,a[1000],b[1000]; void dfs(int f) { if(f==m+1) { for(int i=1;i<=m;i++) { printf("%d",a[i]); } printf("\n"); } for(int i=1;i<=t;i++) { if(b[i]==0) { b[i]=1; a[f]=i; dfs(f+1); b[i]=0; } } } int main() { int n; scanf("%d",&n); while(n--) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); scanf("%d%d",&t,&m); dfs(1); } return 0; }
時間限制:1秒 記憶體限制:128兆
128 次提交 82 次通過
題目描述
小明十分聰明,而且十分擅長排列計算。比如給小明一個數字5,他能立刻給出1-5按字典序的全排列,如果你想為難他,在這5個數字中選出幾個數字讓他繼續全排列,那麼你就錯了,他同樣的很擅長。現在需要你寫一個程式來驗證擅長排列的小明到底對不對。
輸入
第一行輸入整數N(1<N<10)表示多少組測試資料,
每組測試資料第一行兩個整數 n m (1<n<9,0<m<=n)
輸出
在1-n中選取m個字元進行全排列,按字典序全部輸出,每種排列佔一行,每組資料間不需分界。如樣例
樣例輸入
2 3 1 4 2
樣例輸出
1 2 3 12 13 14 21 23 24 31 32 34 41 42 43
提示