有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個格仔組成的矩形 如下圖所示 現需要把這些格仔刷上保護漆。你可以從任意乙個格仔刷起,刷完一格,可以移動到和它相鄰的格仔 對角相鄰也算數 但不能移動到較遠的格仔 因為油漆未乾不能踩!比...