洛谷P1118 數字三角形遊戲

2021-07-10 20:52:06 字數 1218 閱讀 4222

洛谷1118 數字三角形遊戲

題目描述

有這麼乙個遊戲:

寫出乙個1~n的排列a[i],然後每次將相鄰兩個數相加,構成新的序列,再對新序列進行這樣的操作,顯然每次構成的序列都比上一次的序列長度少1,直到只剩下乙個數字位置。下面是乙個例子:

3   1   2   4

4   3   6

7   9

16最後得到16這樣乙個數字。

現在想要倒著玩這樣乙個遊戲,如果知道n,知道最後得到的數字的大小sum,請你求出最初序列a[i],為1~n的乙個排列。若答案有多種可能,則輸出字典序最小的那乙個。

輸入輸出格式

輸入格式:

兩個正整數n,sum。

輸出格式:

輸出包括1行,為字典序最小的那個答案。

當無解的時候,請什麼也不輸出。(好奇葩啊)

輸入輸出樣例

輸入樣例#1:

4 16

輸出樣例#1:

3 1 2 4

說明對於40%的資料,n≤7;

對於80%的資料,n≤10;

對於100%的資料,n≤12,sum≤12345。

【思路】

dfs+楊輝三角。

以題目資料為例:16=7+9=4+3+3+6=3+1+1+2+1+2+2+4=1*3 + 3*1 + 3*2 + 1*4

所以可以推出公式sum=∑ yni*ai 

狀態包括深度與和,知道了公式可以剪去 和 超過sum的搜尋。

【**】

1 #include2 #include3

using

namespace

std;45

const

int maxn = 14;6

7int

n,m;

8int

a[maxn],vis[maxn];

9int

yn[maxn];

1011

void

get_yn() 16}

17void dfs(int d,int

sum)

22if(sum>m) return;23

for(int i=1;i<=n;i++) if(!vis[i]) 29}

3031

intmain()

洛谷P1118 數字三角形

這道題是典型的深搜題,應用全排列遍歷的方法可以在無特判的條件下完成。其中的幾個知識點是需要複習的。楊輝三角 楊輝三角定義在此不表,其為乙個形似下表的數表 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 以下略 a b c d e a b b c c d d e a 2b c b 2c d...

SSL ZYC 洛谷 P1118 數字三角形

題目大意 有這麼乙個遊戲 寫出乙個1 n的排列a i 然後每次將相鄰兩個數相加,構成新的序列,再對新序列進行這樣的操作,顯然每次構成的序列都比上一次的序列長度少1,直到只剩下乙個數字位置。下面是乙個例子 3 1 2 4 4 3 6 7 9 16 最後得到16這樣乙個數字。現在想要倒著玩這樣乙個遊戲,...

洛谷1216 數字三角形

題目描述 觀察下面的數字金字塔。寫乙個程式來查詢從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以走到左下方的點也可以到達右下方的點。7 3 8 8 1 02 7 4 4 4 5 2 6 5 在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大 輸入輸出格式 輸入格...