标签:
输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.
对于每组数据,输出一个整数,代表最少需要删除的字符个数。
abcda google
2 2
首先保存s字符串,之后再保存其rs相反的字符串;
对其求最大子序列和,则结果就是回文串。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int getCommonSubsequenceLength(string s1, string s2){
int len1 = s1.size();
int len2 = s2.size();
vector<vector<int>> vec(len1+1, vector<int>(len2+1, 0));
for(int i = 1; i <= len1; ++i){
for(int j = 1; j <= len2; ++j){
if(s1[i-1] == s2[j-1]){
vec[i][j] = vec[i-1][j-1]+1;
}
else{
vec[i][j] = max(vec[i][j-1], vec[i-1][j]);
}
}
}
return vec[len1][len2];
}
int main(){
string s;
while(cin >> s){
string s1 = s;
reverse(s1.begin(), s1.end());
cout << s.size() - getCommonSubsequenceLength(s, s1) << endl;
}
}
输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.
对于每组数据,输出移位后的字符串。
AkleBiCeilD
kleieilABCD
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main(){
string s;
while(cin >> s){
int len = s.size();
for(int i = len-1; i >= 0; --i){
if(isupper(s[i])){
for(int j = i; j <= len-2; ++j){
if(isupper(s[j+1])){
break;
}
else{
int temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
}
cout << s << endl;
}
return 0;
}
输入包含多组测试数据。
对于每组测试数据:
N - 本组测试数据有n个数
a1,a2...an - 需要计算的数据
保证:
1<=N<=100000,0<=ai<=INT_MAX.
对于每组数据,输出两个数,第一个数表示差的绝对值最小的对数,第二个数表示差的绝对值最大的对数。
6 45 12 45 32 5 6
1 2
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n;
while(cin >> n){
vector<int> vec(n,0);
for(int i = 0; i < n; ++i){
cin >> vec[i];
}
if(n == 0){
cout << 0 << " " << 0 << endl;
continue;
}
sort(vec.begin(), vec.end());
if(vec[0] == vec[n-1]){
int num = n*(n-1)/2;
cout << num << " " << num << endl;
continue;
}
int minNum = count(vec.begin(), vec.end(), vec[0]);
int maxNum = count(vec.begin(), vec.end(), vec[n-1]);
int maxCount = minNum * maxNum;
int minError = vec[1] - vec[0];
for(int i = 0; i < n-1; ++i){
if(vec[i+1]-vec[i] < minError){
minError = vec[i+1]-vec[i];
}
}
int minCount = 0;
for(int i = 0; i < n; ++i){
for(int j = i+1; j < n; ++j){
if(vec[j]-vec[i] == minError){
minCount++;
}
}
}
cout << minCount << " " << maxCount << endl;
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/pukaifei/p/5735533.html