插入加号
来源:互联网 发布:mac app store 验证码 编辑:程序博客网 时间:2024/04/28 13:38
最大和
Time Limit:2000MS Memory Limit:65536K
Total Submit:48 Accepted:11
Total Submit:48 Accepted:11
Description
给你一串数,再给你几个加号插入这串数中,求使和最大的方案。
如给你594,再给你一个加号,易得最优方案为5+94=99。
如给你594,再给你一个加号,易得最优方案为5+94=99。
Input
第一行为这一串长数,长度l<=400。
第二行为一个整数k,代表加号的个数,k<=400。
第二行为一个整数k,代表加号的个数,k<=400。
Output
一个数,为最优解。
Sample Input
594
1
Sample Output
99
Source
#include<iostream>
#include<string>
using namespace std;
#include<string>
using namespace std;
string clear(string s)
{
if(s=="")
s="0";
while(s.length()>0 && s[0]=='0')
s.erase(0,1);
if(s=="")
s="0";
{
if(s=="")
s="0";
while(s.length()>0 && s[0]=='0')
s.erase(0,1);
if(s=="")
s="0";
return s;
}
}
bool bigger(string s1,string s2)
{
bool bigger=true;
{
bool bigger=true;
if(s1.length()>s2.length())
bigger=true;
else if(s1.length()==s2.length() && s1>s2)
bigger=true;
else bigger=false;
return bigger;
}
bigger=true;
else if(s1.length()==s2.length() && s1>s2)
bigger=true;
else bigger=false;
return bigger;
}
string addition(string s1,string s2)
{
int i;
while(s1.length()<s2.length())
s1="0"+s1;
while(s1.length()>s2.length())
s2="0"+s2;
s1="0"+s1;
s2="0"+s2;
for(i=s1.length()-1;i>=0;i--)
{
s1[i]+=s2[i]-'0';
if(s1[i]>'9')
{
s1[i]-=10;
s1[i-1]+=1;
}
}
return clear(s1);
}
string front(string s,int k)
{
int i;
string sum;
string sx;
for(i=0;i<k;i++)
{
sx=s[i];
sum=addition(sum,sx);
}
sum=addition(sum,s.substr(i));
//cout<<"front="<<sum<<endl;
return sum;
}
{
int i;
while(s1.length()<s2.length())
s1="0"+s1;
while(s1.length()>s2.length())
s2="0"+s2;
s1="0"+s1;
s2="0"+s2;
for(i=s1.length()-1;i>=0;i--)
{
s1[i]+=s2[i]-'0';
if(s1[i]>'9')
{
s1[i]-=10;
s1[i-1]+=1;
}
}
return clear(s1);
}
string front(string s,int k)
{
int i;
string sum;
string sx;
for(i=0;i<k;i++)
{
sx=s[i];
sum=addition(sum,sx);
}
sum=addition(sum,s.substr(i));
//cout<<"front="<<sum<<endl;
return sum;
}
string mid(string s,int k)
{
int i;
string sum;
string sumx="0";
string str;
string sx,sy;
string max;
int j;
{
int i;
string sum;
string sumx="0";
string str;
string sx,sy;
string max;
int j;
for(i=0;i<k;i++)
{
sx=s[i];
sumx=addition(sumx,sx);
sum=sumx;
str="0";
for(j=0;j<k-i-1;j++)
{
sy=s[s.length()-1-j];
sum=addition(sum,sy);
}
str=s.substr(i+1,s.length()-k);
sum=addition(sum,str);
if(bigger(sum,max)) max=sum;
else continue;
}
{
sx=s[i];
sumx=addition(sumx,sx);
sum=sumx;
str="0";
for(j=0;j<k-i-1;j++)
{
sy=s[s.length()-1-j];
sum=addition(sum,sy);
}
str=s.substr(i+1,s.length()-k);
sum=addition(sum,str);
if(bigger(sum,max)) max=sum;
else continue;
}
//cout<<"max="<<max<<endl;
return max;
}
return max;
}
string back(string s,int k)
{
int i;
string sum;
string sx;
for(i=s.length()-1;i>s.length()-1-k;i--)
{
sx=s[i];
sum=addition(sum,sx);
}
sum=addition(sum,s.substr(0,s.length()-k));
//cout<<"back="<<sum<<endl;
return sum;
}
{
int i;
string sum;
string sx;
for(i=s.length()-1;i>s.length()-1-k;i--)
{
sx=s[i];
sum=addition(sum,sx);
}
sum=addition(sum,s.substr(0,s.length()-k));
//cout<<"back="<<sum<<endl;
return sum;
}
string Max(string s,int k)
{
string f,b,m;
{
string f,b,m;
f=front(s,k);
b=back(s,k);
m=mid(s,k);
b=back(s,k);
m=mid(s,k);
if(bigger(f,b))
{
if(bigger(f,m)) return f;
else return m;
}
else{
if(bigger(b,m)) return b;
else return m;
}
}
int main()
{
string a;
int i,k;
string max;
{
if(bigger(f,m)) return f;
else return m;
}
else{
if(bigger(b,m)) return b;
else return m;
}
}
int main()
{
string a;
int i,k;
string max;
cin>>a;
cin>>k;
max=Max(a,k);
cout<<max<<endl;
cout<<max<<endl;
return 0;
}
}
- 插入加号
- 加号逆
- 加号编码
- 加号和减号
- url中有加号
- 奇怪的小加号
- 不用加号计算加法
- 【JavaScript】加号(+)运算符号
- url中加号问题
- HttpUtility.UrlEncode 空格 加号
- Oracle关联加号(+)
- 加号展开、减号收缩
- 加号的特殊功能
- Object-c 加号 + 减号 -
- cxGrid 分组 展开 加号
- 加号放假徒儿
- Java中的加号“+”
- 字符连接符加号
- 地图填色问题
- 用ASP.NET实现在线用户统计
- [C语言]Scanf()函数详细介绍篇
- SQL Server 2005全文检索技术在网站上的应用实录
- csdn真是个好网站
- 插入加号
- UltraWebGrid添加单行
- 健康男人的标准
- 一段通用的分页函数
- 最利秋冬减肥的几种运动(图)
- tomcat 乱码解决
- NEWS(搜索)
- 大众健身不应盲目模仿国外简单健身形式
- 初中级阶段练法课例--肌肉混淆练法基本模式