數字排列 (HUST 1586)

2021-08-04 04:21:54 字數 934 閱讀 7898

現有n個k位的數字,你的任務是重新安排數字每一位的位置,使得重新安排後這n個數字中最大的數字和最小的數字之差的絕對值最小,對於每一位的調整是相對於所有的數字的,例如有3個數字1234、4321和7890,重新安排的方案是交換第二位和第三位,則3個數字變為1324、4231和7980。 

input

輸入包括多組樣例,每組樣例包括多行。每組樣例的第一行包括2個整數n和k,分別代表數字的個數和位數(1 ≤ n, k ≤  

8),接下來的的n行包括n個k位的數字,允許調整後的數字有前導0(例如000123代表123)。

output

每組資料輸出乙個整數,為調整後最大數字與最小數字之間的最小差值。

sample input

3 3

010909

0126 4

5237

2753

7523

5723

5327

2537

sample output

3

2700

hint

第二組樣例可以將原順序( 1,2,3,4) 調整為(3,1,4,2),則第二個數字變為5237,第三個數字變   為2537,分別為這樣變換後的最大值和最小值,可以驗證這樣變換後的差值2700為最小差值。

這道題是乙個需要用到全排列函式的題目,通過全排列進行列舉,然後取最優解即可。

#include #include #include using namespace std;

int main()

if(ans > max - min) ans = max - min;

}while(next_permutation(a,a+k));

cout << ans << endl;

} return 0;

}

HUST 1586 數字排列

時間限制 1秒 記憶體限制 128兆 91 次提交 36 次通過 題目描述 現有n個k位的數字,你的任務是重新安排數字每一位的位置,使得重新安排後這n個數字中最大的數字和最小的數字之差的絕對值最小,對於每一位的調整是相對於所有的數字的,例如有3個數字1234 4321和7890,重新安排的方案是交換...

騰訊 數字排列

宣告 題目來自 http blog.csdn.net v july v archive 2010 11 17 6015165.aspxhttp blog.csdn.net v july v archive 2011 01 10 6126406.aspx自己先做一遍。題目 初看此題,貌似很難,10分鐘...

排列數字問題

數字排列問題 今有7對數字 兩個1,兩個2,兩個3,兩個7,把它們排成一行。要求,兩個1間有1個其它數字,兩個2間有2個其它數字,以此類推,兩個7之間有7個其它數字。如下就是乙個符合要求的排列 17126425374635 當然,如果把它倒過來,也是符合要求的。請你找出另一種符合要求的排列法,並且這...