light oj 1047-neighbor house
2015-08-14 20:44
411 查看
ime Limit:500MS Memory Limit:32768KB 64bit IO Format:%lld & %llu
Description
The people of Mohammadpur have decided to paint each of their houses red, green, or blue. They've also decided that no two neighboring houses will be painted the same color. The neighbors of house i are houses i-1 and i+1. The first and last houses are not neighbors.
You will be given the information of houses. Each house will contain three integers "R G B" (quotes for clarity only), where R, G and B are the costs of painting the corresponding house red, green, and blue, respectively. Return the minimal total cost required to perform the work.
Input
Input starts with an integer T (≤ 100), denoting the number of test cases.
Each case begins with a blank line and an integer n (1 ≤ n ≤ 20) denoting the number of houses. Each of the next n lines will contain 3 integers "R G B". These integers will lie in the range [1, 1000].
Output
For each case of input you have to print the case number and the minimal cost.
Sample Input
2
4
13 23 12
77 36 64
44 89 76
31 78 45
3
26 40 83
49 60 57
13 89 99
Sample Output
Case 1: 137
Case 2: 96
Hint
Use simple DP
程序分析:此题的题意为有n户人,打算把他们的房子图上颜色,有red、green、blue三种颜色,每家人涂不同的颜色要花不同的费用,而且相邻两户人家之间的颜色要不同,求最小的总花费费用。我们所要使用的方法就是DP,其中有一个小问题值得注意就是开始我用C提交的时候就会提示CE,之后我们C++交的时候就过了,所以有时候选择语言也是很重要的。
程序代码:
Description
The people of Mohammadpur have decided to paint each of their houses red, green, or blue. They've also decided that no two neighboring houses will be painted the same color. The neighbors of house i are houses i-1 and i+1. The first and last houses are not neighbors.
You will be given the information of houses. Each house will contain three integers "R G B" (quotes for clarity only), where R, G and B are the costs of painting the corresponding house red, green, and blue, respectively. Return the minimal total cost required to perform the work.
Input
Input starts with an integer T (≤ 100), denoting the number of test cases.
Each case begins with a blank line and an integer n (1 ≤ n ≤ 20) denoting the number of houses. Each of the next n lines will contain 3 integers "R G B". These integers will lie in the range [1, 1000].
Output
For each case of input you have to print the case number and the minimal cost.
Sample Input
2
4
13 23 12
77 36 64
44 89 76
31 78 45
3
26 40 83
49 60 57
13 89 99
Sample Output
Case 1: 137
Case 2: 96
Hint
Use simple DP
程序分析:此题的题意为有n户人,打算把他们的房子图上颜色,有red、green、blue三种颜色,每家人涂不同的颜色要花不同的费用,而且相邻两户人家之间的颜色要不同,求最小的总花费费用。我们所要使用的方法就是DP,其中有一个小问题值得注意就是开始我用C提交的时候就会提示CE,之后我们C++交的时候就过了,所以有时候选择语言也是很重要的。
程序代码:
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int dp[23][4]; int a[23][4]; int min(int a,int b) { if(a>b) return b; else return a; } int main() { int n, t; scanf("%d",&t); for(int k = 1; k <= t; k++) { scanf("%d",&n); memset(a, 0, sizeof(a)); memset(dp, 0, sizeof(dp)); for (int l= 1; l <= n; l++) { for (int j = 1; j <= 3; j++) scanf("%d",&a[l][j]); } for (int i = 1; i <= n; i++) { for (int j = 3; j < 6; j++) { dp[i][j%3+1] = a[i][j%3+1] + min(dp[i-1][(j-1)%3+1], dp[i-1][(j+1)%3+1]); //这里我用这种方法避免了分情况讨论,、减少了代码量 } } printf("Case %d: %d\n", k, min(dp [1], min(dp [2], dp [3]))); } return 0; }
相关文章推荐
- 机房收费系统——转换list泛型时,字段名称不对应出现问题
- IncorrectArchitecture问题解决办法
- Repeated DNA Sequences
- springmvc中的几个问题
- Java日志框架——Mybatis选用的日志框架解决方案
- hdu 4324 Triangle LOVE(拓扑判环)
- BNU 4216.修路
- 黑马程序员一一Java的多线程笔记
- nginx之身份验证
- 从字符串A中删除字符串B的所有字符
- 周赛A题
- 解决C3P0在Linux下Failed to get local InetAddress for VMID
- 快速上手之 C# 操作Directory类
- 有关指针的一道题
- reverseCLGeocode地图上的编码与反编码
- 洛谷 P1063 能量项链
- redis 学习笔记(二)
- IOS开发第三方库
- 线性表链式存储结构 单链表
- '[<NSObject 0x8a4b500> setValue:forUndefinedKey:]