動態規劃 刷油漆問題

2021-09-03 03:35:57 字數 1101 閱讀 5574

有n輛車排成一排,還有m種不同顏色的油漆,其中第i種油漆夠塗ai輛車,同時所有油漆恰好能塗完n輛車。若任意兩輛相鄰的車顏色不能相同,有多少種塗油漆的方案?

第一行包含乙個正整數m。

接下來一行包含m個正整數,第i個正整數表示ai。

輸出乙個整數,表示答案除以23333的餘數。

樣例1輸入

32 1 3

樣例1輸出

樣例1解釋

10個方案分別是:

1 3 1 3 2 3

1 3 2 3 1 3

2 3 1 3 1 3

3 1 2 3 1 3

3 1 3 1 2 3

3 1 3 1 3 2

3 1 3 2 1 3

3 1 3 2 3 1

3 2 1 3 1 3

3 2 3 1 3 1

n為ai之和。

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

對於100%的資料,m ≤ 20,ai ≤ 5。

#include using namespace std;

// ***************== **實現開始 ***************==

/* 請在這裡定義你需要的全域性變數 */

// n輛車,m種油漆,第i種油漆夠塗ai輛車,同時所有油漆恰好能塗完n輛車。若任意兩輛相鄰的車顏色不能相同,有多少種塗油漆的方案

// m:如題,[1,20]

// a:長度為m的陣列,意義如題; ai: [1,5]

// 返回值:方案數

// f: memorization

const int n = 10, mod = 23333;

int f[n][n][n][n][n][n], n; //memset( f, -1, sizeof(f));

// 引數:第x輛車,第x-1輛車顏色為p,四種顏色各自剩餘量

int dfs(int x, int p, int c1, int c2, int c3, int c4)

printf("%d\n", getanswer(m, a));

return 0;

}

鄧俊輝老師的《演算法訓練營》第一期。

格仔刷油漆(動態規劃(遞推))

x國的一段古城牆的頂端可以看成 2 n個格仔組成的矩形 如圖所示 現需要把這些格仔刷上保護漆。你可以從任意乙個格仔刷起,刷完一格,可以移動到和它相鄰的格仔 對角相鄰也算數 但不能移動到較遠的格仔 因為油漆未乾不能踩!比如 a d b c e f 就是合格的刷漆順序。c e f d a b 是另一種合...

藍橋杯 格仔刷油漆 動態規劃

問題描述 x國的一段古城牆的頂端可以看成 2 n個格仔組成的矩形 如下圖所示 現需要把這些格仔刷上保護漆。你可以從任意乙個格仔刷起,刷完一格,可以移動到和它相鄰的格仔 對角相鄰也算數 但不能移動到較遠的格仔 因為油漆未乾不能踩!比如 a d b c e f 就是合格的刷漆順序。c e f d a b...

歷屆試題 格仔刷油漆 動態規劃)

歷屆試題 格仔刷油漆 時間限制 1.0s 記憶體限制 256.0mb 問題描述 x國的一段古城牆的頂端可以看成 2 n個格仔組成的矩形 如下圖所示 現需要把這些格仔刷上保護漆。你可以從任意乙個格仔刷起,刷完一格,可以移動到和它相鄰的格仔 對角相鄰也算數 但不能移動到較遠的格仔 因為油漆未乾不能踩!比...