关闭

hihocoder 1039 字符消除 C++程序

标签: 算法程序设计C++OJhihocoder
286人阅读 评论(0) 收藏 举报
分类:

这是我的第一篇博客额。

今天花了一下午时间折腾这道题,并不是因为题有多难,而是因为花了很多时间去寻找优化算法,结果无功而返。最后还是用蛮力法AC过了。算发思路就是遍历插入地点和插入字符,计算出所有情况下的字符数,输出最大消除字符个数。

废话不说,直接上代码,希望时间比我少的同学能分享一下代码。

#include<iostream>
#include<string>


using namespace std;


/*
输入:一个字符串的引用
输出:按照消除规则消除的字符数
说明:由于参数为引用类型,函数会破坏输入字符串
*/
int getResult(string &s)
{
int ol = s.length();
int i = 0, flag = 1;
while (flag == 1)
{
flag = 0;
while (i < s.length())
{
if (s[i] == s[i + 1])
{
while (s[i] == s[i + 1])
s.erase(i + 1, 1);
s.erase(i, 1);
flag = 1;
}
else
i++;
}
i = 0;
}
return ol - s.length();
}


/*
输入:s一个字符串,第i个字符后面,添加字符c
输出:返回按照消除规则的消除字符个数
说明:函数功能为计算在s字符串的i个字符后添加指定字符c所形成的字符串按照消除规则消除的字符个数
*/


int getWithAddChar(string s, int i, char c)
{
s.insert(i, 1, c);
return getResult(s);


}


/*
输入:s一个字符串的引用,i添加字符位置
输出:按照消除规则消除如果在第i个字符后添加字符的最大字符数
说明:函数功能为计算在s字符串的i个字符后添加所有可能的字符后,最大的消除字符个数
*/


int getWithAddPos(string &s, int i)
{
int maxn = 0, ct = 0;


for (char x = 'A'; x < 'D'; x++)
{
ct = getWithAddChar(s, i, x);
if (ct>maxn)
maxn = ct;
}
return maxn;


}


/*
输入:s一个字符串的引用
输出:按照添加和消除规则所消除的最大字符数
说明:
*/
int getWithAddStrategy(string &s)
{
int maxn = 0, ct = 0;
for (int i = 0; i <= s.length(); i++)
{




ct = getWithAddPos(s, i);
if (ct > maxn)
maxn = ct;


}
return maxn;
}


int main()
{
int x, y;
string *s;


cin >> y;


x = y;


//根据第一行输入分配内存
if (cin&&x > 0)
s = new string[x];


else return -1;




while (cin&&x && (x<101))
{
//输入字符串
cin >> s[--x];


//输入检查
for (int i = 0; i < s[x].length(); i++)
{
if (s[x][i]<'A' || s[x][i]>'C')
return -1;
}
if (s[x].length()>100)
return -1;
}


//计算并输出
for (x = y - 1; x >= 0; --x)
cout << getWithAddStrategy(s[x]) << endl;


//释放内存
delete[] s;


return 0;
}


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

算法练习系列—hiho1039 字符消除

题目地址:http://hihocoder.com/problemset/problem/1039 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字...
  • Lu597203933
  • Lu597203933
  • 2015-03-13 20:24
  • 5713

hihoCoder:1039字符串消除

题目: 小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1)如果s包含长度超过1的由相同字母组成的子串,那么这些子串会被同时消除,余下的子串...
  • KangRoger
  • KangRoger
  • 2014-12-06 09:49
  • 9212

#1039 : 字符消除

题目来自于:hihocoder http://hihocoder.com/problemset/problem/1039 #1039 : 字符消除 时间限制:10...
  • zhouyelihua
  • zhouyelihua
  • 2015-04-17 19:52
  • 1066

hihocoder 1039 字符消除 (枚举+模拟)

hihocoder 1039 字符消除 (枚举+模拟)
  • Tc_To_Top
  • Tc_To_Top
  • 2016-03-14 23:46
  • 530

#hihoCoder: 1039 : 字符消除

hihoCoder:1039 : 字符消除时间限制:1000ms 单点时限:1000ms 内存限制:256MB描述小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母”ABC”的字符串s,消除过...
  • weixin_39684284
  • weixin_39684284
  • 2017-08-01 15:21
  • 136

hihocoder #1039 : 字符消除

直接暴力,每次把一个字符串中的重复的删除了之后再存到另一个字符串中,在不断重复这步,可以用递归来做。#include #include #include #include #include #incl...
  • liyunlong41
  • liyunlong41
  • 2015-07-04 15:19
  • 392

hihoCoder题库1039字符消除

题目 时间限制:1000ms  单点时限:1000ms  内存限制:256MB  描述 小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的:    1)如...
  • zongzi_57
  • zongzi_57
  • 2016-04-03 19:37
  • 499

【hihocoder】#1039 : 字符消除

题目: 小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1)如果s包含长度超过1的由相同字母组成的子串,那么这些子串会被同时消除,余下的...
  • yeqiuzs
  • yeqiuzs
  • 2016-09-16 19:06
  • 705

hihoCoder 1039字符消除 (又水又坑)

描述 小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1)如果s包含长度超过1的由相同字母组成的子串,那么这些子串会被同时消除,余下的子...
  • lwgkzl
  • lwgkzl
  • 2016-12-18 22:08
  • 139

hihoCoder 1039 字符消除(字符串处理)

题目地址 :http://hihocoder.com/problemset/problem/1039 描述 给定一个只有大写字母‘ABC’组成的字符串,让先随便在任何位置加一个字符,之后进行消除,...
  • qq_33216593
  • qq_33216593
  • 2016-09-09 16:36
  • 316
    个人资料
    • 访问:8603次
    • 积分:216
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论