洛谷P2758 c++
时间: 2023-05-18 20:05:56 浏览: 111
洛谷 P2758 C 题目是一道给定两个字符串,要求你求出它们的最长公共子序列。
最长公共子序列 (LCS) 是指两个字符串的最长的公共子序列,其中子序列的字符顺序必须保持不变,但不一定连续。
这道题可以使用动态规划来解决,具体做法请参考相关资料和教程。
相关问题
洛谷p2249c++
洛谷p2249c是一个题目的编号,代表洛谷在线评测系统中的一道题目。根据提供的代码来看,这道题目的大意是给定两个数列a和b,要求对于b中的每个元素,在a中找到对应的位置。如果找到了,则输出该位置的索引,否则输出-1。具体实现的方法有两种,一种是使用二分查找来提高效率,另一种是使用暴力搜索。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [洛谷P2249 【深基13.例1】查找](https://blog.csdn.net/xhjyJolie/article/details/130000755)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
洛谷P1303 C++
洛谷P1303是一道编程题,需要解决的是火柴棍等式问题。给定一个数字N,要求用最少的火柴棍拼出所有等式的组合。每个数字可以用6根火柴棍拼出,每个等式由两个数字和一个运算符组成。其中运算符可以是加法、减法、乘法或除法。
为了解决这道题,可以使用动态规划的方法。首先,创建一个二维数组dp,其中dp[i][j]表示用i个火柴棍组成数字j所需的最小火柴棍数。然后,使用一个循环遍历数字0到9,计算每个数字所需的最小火柴棍数,并更新dp数组。最后,根据dp[N]的值即可得到用N个火柴棍所能拼出的最小数字。
下面是C语言的示例代码:
```c
#include <stdio.h>
int dp[10][1001];
int min(int a, int b) {
return a < b ? a : b;
}
int main() {
// 初始化dp数组
for (int i = 0; i <= 9; ++i) {
for (int j = 0; j <= 1000; ++j) {
dp[i][j] = 1000000;
}
}
// 数字0到9所需的火柴棍数
dp[0][6] = 0;
dp[1][2] = 2;
dp[2][5] = 5;
dp[3][5] = 5;
dp[4][4] = 4;
dp[5][5] = 5;
dp[6][6] = 6;
dp[7][3] = 7;
dp[8][7] = 8;
dp[9][6] = 9;
// 动态规划计算
for (int i = 10; i <= 1000; ++i) {
for (int j = 0; j <= 9; ++j) {
for (int k = 0; k <= i; ++k) {
if (dp[j][k] != 1000000) {
dp[j][i] = min(dp[j][i], dp[j][k] + dp[j][i - k]);
}
}
}
}
int N;
scanf("%d", &N);
// 输出最小火柴棍数
printf("%d\n", dp[0][N]);
return 0;
}
```
阅读全文