分手在雨季(HZNUOJ 2024程序设计基础第六章作业 Pro )
【C系列6.9】分手在雨季
[题目链接]( HZNUOJ–2024程序设计基础第六章作业 Pro (dup4.cn) )
注:此篇文章仅供学习使用,严禁抄袭以刷题量。
题目分析:
DP:最长上升子序列
这道题是一道DP(动态规划)的经典例题。
假如以后有幸假如acm实验室你就能知道这题独特的魅力
这题放在这非常不合理。。。
接下来我会讲一下,看不懂也无伤大雅
dp[i]:以第i个数结尾的最优情况数
第一个循环表示当这个数组只有给出的前i个数时,第二个循环表示i位置作为末尾时,选取j位置作为倒数第二个数时是否能成立,是否产生最优解。
领悟一下,当你能自己理解的时候,你就知道这有多秒
c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int dp[20];
int s[20];
int ans = 0;
for (int i = 0; i < 10; ++i)
{
dp[i] = 1;
}
for (int i = 0; i < 10; ++i)
{
scanf("%d", &s[i]);
}
for (int i = 0; i < 10; ++i)
{
for (int j = 0; j < i; ++j)
{
if (s[j] < s[i] && dp[j] >= dp[i])
{
dp[i] = dp[j] + 1;
}
}
}
for (int i = 0; i < 10; ++i)
{
if (ans < dp[i])
{
ans = dp[i];
}
}
printf("%d", ans);
return 0;
}