(一)此題資料範圍很小,所以可用搜尋。用b陣列記錄每次的路徑,最後到達終點並比較,如果結果更大,則用c陣列更新路徑。
#include#includeusing namespace std;
int n,m,a[20][20],ans,b[20],c[20];
void dfs(int x,int y,int z)
return;
}for (int i=0; i<=m-y; i++)
}int main()
(二)也可以用動歸來做。
f[x][y]:x個公司分配y臺機器最大盈利
初始化:f[0][...] = 0 f[...][0] = 0
動態轉移方程:f[i][j] = f[i-1][k] + a[i][j-k] (0 <= k <= j) (討論第i個公司分配0~v-k臺機器的情況)
#include#includeusing namespace std;
int n,m,a[20][20],dp[20][20],book[20][20];
//book[x][y]:前x個公司分配y臺機器得到最大盈利,前面所有公司已分配的台數
void print(int x,int y)
int main()
} printf("%d\n",dp[n][m]);
print(n,m);
printf("%d %d",n,m-book[n][m]);
return 0;
}
洛谷P2066 機器分配
總公司擁有高效裝置m臺,準備分給下屬的n個分公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不超過裝置數m。輸入格式 第一行有兩個數,第乙個數是分公司數n...
P2066 機器分配
無 總公司擁有高效裝置m臺,準備分給下屬的n個分公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不超過裝置數m。輸入格式 第一行有兩個數,第乙個數是分公司...
洛谷2066 機器分配
總公司擁有高效裝置m臺,準備分給下屬的n個分公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不超過裝置數m。輸入格式 第一行有兩個數,第乙個數是分公司數n...