程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 4572 Bottles Arrangement(構造)

hdu 4572 Bottles Arrangement(構造)

編輯:C++入門知識

題目鏈接:hdu 4572 Bottles Arrangement


題目大意:給定m和n,表示有m種高度的瓶子,每種瓶子n個,現在將n*m個瓶子排列成一個m行n列的矩陣,要求:1,每一列沒有相同高度的瓶子;2,每一行相鄰的兩個瓶子的高度差的絕對值不大於1。然後所有滿足條件的矩陣有一個值,即為每一行所有元素之和的最大值。要求構造出一個矩陣,使得該值最小。


解題思路:我是從最大的瓶子開始考慮的,除非放在最左或是最右,否則一個最大號的瓶子要消耗兩個第二大的瓶子(條件1),以7為例,

7 6 ...

6 7 7 6...

4 5 6 7 7 6

2 3 4 5 6 7

這樣的方法是最優的,而且最大值肯定為中間那行。


#include 
#include 

int main () {
	int m, n;
	while (scanf("%d%d", &m, &n) == 2) {
		int t = m - n/2 + 1;
		int s = (t + m) * (n/2);
		printf("%d\n", s + t - 1);
	}
	return 0;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved