DP题,(刚开始)不太周全想法:最初只有一个数组 ,并且只放第一个高度,然后只要后面输入的比数组中的大,就将这个大的数,放到另一个数组中;比数组中的数小就将其放进数组中。这样想数组会不确定的多,再加上想想后面都没法做,写出代码出错,而且该也很费劲。
从网上看到一个想法,思想一样,只不过,他的更加精确,而且周全,简单: 只用一个数组,数组中的元素记录每个系统中最低的高度。这样依次循环,最后数组中元素的个数即是最少需要系统的个数。
#include<iostream>
using namespace std;int main()
{
freopen("input.txt","r",stdin);
int num , j ,i, ok ,high;
while(cin>>num)
{
int a[100] = {30005};
i = 1;
while(num --)
{
ok = 0;
cin>>high;
for(j = 0 ; j < i ; j ++)
{
if(a[j] >= high)
{
a[j] = high;
ok = 1;
break;
}
}
if(!ok)
{
a[i ++] = high;
}
}
cout<<i<<endl;
}
return 0;
}
本文介绍了一种解决DP(动态规划)问题的有效方法。通过使用单一数组来跟踪系统中的最低高度,可以有效地确定最少需要的系统数量。文章还提供了一个具体的实现示例,包括输入处理和关键逻辑。
297

被折叠的 条评论
为什么被折叠?



