最近一直在看动态规划,看到这道题时候直接想到了动态规划,这道题和矩阵连乘可以一起做,看到有些人是用贪心做的,我一开始没想到。下面是代码,原理我都写清楚了。
#include<iostream>
#include<memory.h>using namespace std;
/*
HDU: 今年暑假不AC
题目说明:
Input
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数
据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处
理。
Output
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。
分析:
设f(s,e)为开始时间为s到e能观看的最大节目数。
对于f(0,2)=Max{f(0,1)+f(1,2),f(0,2)},对于f(0,i)=Max{f(0,1)+f(1,i),f(0,2)+f(2,i),...,f(0,i-1)+f(i-1,i)}
*/
int main(){
int n=0;
int Ti[101][101];