貪玩的sunnypig請charles為他打造乙個奇幻世界,charles欣然答應了。然而一向善於出難題的charles是決不會輕易讓sunnypig輕鬆擁有乙個奇幻世界的,於是charles在建造過程中設定了重重機關,只有在sunnypig破解了這些障礙之後,才能嘗試到奇幻世界中最有玩頭的終極寶貝——時空穿梭機。雖然奇幻世界中其他的寶貝也很有趣,但貪玩的sunnypig怎能放過打boss的機會呢?於是他開始了破解障礙的旅程。
第二道障礙**於一種古老的數學發現——楊輝三角,不過應該是倒過來的楊輝三角。若給出1~n的乙個排列a,則將a1、a2相加,a2、a3相加……an-1、an相加,則得到一組n-1個元素的數列b;再將b1、b2相加,b2、b3相加,bn-2、bn-1相加,則得到一組n-2個元素的數列……如此往復,最終會得出乙個數t。而charles給sunnypig出的難題便是,給出n和t,再盡可能短的時間內,找到能通過上述操作得到t且字典序最小的1~n的排列。經過漢諾塔問題的訓練,sunnypig開始沉著的思考。。。
本題有多組資料,對於每組資料:
一行兩個整數n(0用檔案結尾符判斷輸入結束。
對於每組測試資料輸出一行n個整數,用空格分開,行尾無多餘空格,表示求出來的滿足要求的1~n的乙個排列。
4 16
3 9
3 1 2 4
1 3 2
各個測試點2s
不同測試點分數可能不同
建立乙個陣列b[i][j][k],表示楊輝三角第i行從第j個數第k小的數,比如第4行,1 3 3 1,則b[4][1][1]=1,b[4][1][2]=1;b[4][1][3]=3;b[4][2][1]=1;b[4][2][2]=3;b[4][2][3]=3
搜尋剪枝:每次搜尋時判斷剩餘的數和剩餘的楊輝數相乘的最小值和最大值,如果最小值加上當前和》t則剪枝,如果最大值加上當前和資料太弱了,可以找到大量的算不出來的資料比如 n=20 t=5904462 6143311
1 #include2 #include3using
namespace
std;45
int n,t,a[25][25]=,b[25][25][25];6
structorder[25][25
],tr;
7bool over=0;8
9void search(int x,int sum,int ans,bool
vis)
1819
int min=0,max=0,d=1;20
for(int i=1;i<=n;++i)
21if(vis[i]==0
)22
23if(sum+min>t||sum+maxreturn;24
for(int i=1;i<=n;++i)
25if(vis[i]==0)26
3233}34
35int
main()
3645
4647
4849
for(int i=1;i<=20;++i)
50for(int j=1;j<=i;++j)
51for(int k=j+1;k<=i;++k)
52if(order[i][j].x>order[i][k].x)
53
54else
if(order[i][j].x==order[i][k].x&&(order[i][j].y>order[i][k].y))
55
5657
5859
for(int i=1;i<=20;++i)
60for(int j=1;j<=i;++j)
61for(int k=1;k<=i-j+1;++k)
6268
69while(cin>>n>>t)
70;
73bool vis[25]=;
74 search(1,0
,ans,vis);
7576}77
//system("pause");
78 }
上三角矩陣下三角矩陣
要求給定矩陣,輸出其上三角矩陣或下三角矩陣 源 如下 include include include include const int m 5 void proc int array m m void main printf n proc a printf result array is n fo...
python楊輝三角 楊輝三角I II
給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 5 輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 可以一行一行錯位加,當然這裡提供更簡便的方法。任取一行描述 1,2,1 如何得到 1,3,3,1 ...
sicp練習1 12 帕斯卡三角(楊輝三角)
楊輝三角以前在學習c語言時候,用迴圈很容易實現。由於剛剛接觸函式式語言,遞迴和迭代方式實現迴圈還沒深入我心。下意思的想用鍊錶來實現,但發現自己對scheme的鍊錶操作太不熟悉,總會出現這樣那樣子的無法自我解釋的問題。最後參考了 dennis zane 的pascal實現,dennis zane 是把...