血淋淋的教训:输入数据有多组:所以一定要while(cin>>str){}
2017-03-07 22:08
316 查看
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?
输出需要删除的字符个数。
输入描述:
输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.
输出描述:
对于每组数据,输出一个整数,代表最少需要删除的字符个数。
输入例子:
输出例子:
#include <string>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
int lcs[1001][1001];
int main()
{
string s1,s2;
cin >> s1;
int len = s1.length();
s2 = s1;
reverse(s2.begin(), s2.end());
memset(lcs, 0, sizeof(lcs));
//vector<vector<int>> lcs(len + 1, vector<int>(len + 1, 0));
//for (int i = 0; i < len+1; ++i) lcs[i][0]=0;
//for (int i = 0; i < len+1; ++i) lcs[0][i]=0;
for (int i = 1; i <= len; i++){
for (int j = 1; j <= len; j++){
if (s1[i-1] == s2[j - 1])
lcs[i][j] = lcs[i-1][j-1]+1;
else{
lcs[i][j] = max(lcs[i-1][j],lcs[i][j-1]);
}
}
}
cout << len - lcs[len][len] << endl;
return 0;
}
输出需要删除的字符个数。
输入描述:
输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.
输出描述:
对于每组数据,输出一个整数,代表最少需要删除的字符个数。
输入例子:
abcda google
输出例子:
22#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
int lcs[1001][1001];
int main()
{
string s1,s2;
cin >> s1;
int len = s1.length();
s2 = s1;
reverse(s2.begin(), s2.end());
memset(lcs, 0, sizeof(lcs));
//vector<vector<int>> lcs(len + 1, vector<int>(len + 1, 0));
//for (int i = 0; i < len+1; ++i) lcs[i][0]=0;
//for (int i = 0; i < len+1; ++i) lcs[0][i]=0;
for (int i = 1; i <= len; i++){
for (int j = 1; j <= len; j++){
if (s1[i-1] == s2[j - 1])
lcs[i][j] = lcs[i-1][j-1]+1;
else{
lcs[i][j] = max(lcs[i-1][j],lcs[i][j-1]);
}
}
}
cout << len - lcs[len][len] << endl;
return 0;
}
相关文章推荐
- 如何在while(cin>>str)跳出循环后能继续执行程序中其他的输入操作
- 关于while(cin>>str)输入无法结束的问题(转+修改)
- while (cin>>str)退出死循环
- C++中while(cin>>str)和while(cin.get(str))的结束问题
- cin输入数据(cin不丢弃回车符,>>会跳过回车符)
- while(cin>>str)结束的问题
- while(cin>>str)无法结束的问题
- 关于while(cin>>str)结束的问题 .
- while(cin >>)的输入停止与错误问题
- 关于while(cin>>str)
- 标准输入cin的返回值以及while(cin>>x)的问题
- While(cin>>str)无法结束问题
- while(cin>>str)无法结束的问题
- 标准输入cin的返回值以及while(cin>>x)的问题
- C++:关于while(cin>>str)无法结束的问题
- 输入循环在什么情况下结束,while(cin>>word) 类型?
- while(cin>>str)无法结束的问题(转)
- 有关while(cin>>str)的问题
- 关于while(cin>>str)无法结束的问题
- while(cin >> buf)在linux下实现停止输入的办法