求乙個0~n-1的排列(即每個數只能出現一次),給出限制條件(一張n*n的表,第i行第j列的1或0,表示為j-1這個數不能出現在i-1這個數後面,並保證第i行第i列為0),將這個排列看成乙個自然數,求從小到大排序第k個排列。
輸入描述:
n<=10,k<=500000
輸入樣例:
3 20 1 1
1 0 0
0 1 0
輸出描述:
第一行為n和k,接下來的n行,每行n個數,0表示不能,1表示能
輸出樣例:
1 0 2
#include
#include
int limit[15]
[15];
//限制條件
int number[15]
,occupy[15]
;int n,k,cnt=0;
intjudge
(int pos,
int n)
//判斷j這個數能不能出現在i的後面
void
calallsort
(int depth)
} occupy[i]=1
;calallsort
(depth+1)
; occupy[i]=0
;}}}
intmain()
}calallsort(0
);return0;
}
演算法訓練 排列問題
問題描述 求乙個0 n 1的排列 即每個數只能出現一次 給出限制條件 一張n n的表,第i行第j列的1或0,表示為j 1這個數不能出現在i 1這個數後面,並保證第i行第i列為0 將這個排列看成乙個自然數,求從小到大排序第k個排列。資料規模和約定 n 10,k 500000 輸入格式 第一行為n和k,...
演算法訓練 排列問題
題目鏈結 問題描述 求乙個0 n 1的排列 即每個數只能出現一次 給出限制條件 一張n n的表,第i行第j列的1或0,表示為j 1這個數不能出現在i 1這個數後面,並保證第i行第i列為0 將這個排列看成乙個自然數,求從小到大排序第k個排列。include include using namespac...
藍橋杯VIP試題 演算法訓練 排列問題
資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 求乙個0 n 1的排列 即每個數只能出現一次 給出限制條件 一張n n的表,第i行第j列的1或0,表示為j 1這個數不能出現在i 1這個數後面,並保證第i行第i列為0 將這個排列看成乙個自然數,求從小到大排序第k個排列。資料規模和約...