700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 键盘输入一个高精度的正整数n 去掉任意s个数字后剩下的数字按原左右次序将组成一个

键盘输入一个高精度的正整数n 去掉任意s个数字后剩下的数字按原左右次序将组成一个

时间:2019-07-22 20:14:29

相关推荐

键盘输入一个高精度的正整数n 去掉任意s个数字后剩下的数字按原左右次序将组成一个

键盘输入一个高精度的正整数n,去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数最小。 如输入: 1785434 输出: 13

#include <iostream>#include <string>using namespace std;//从字符串v中从下标j开始删除s个字符,删除的字符保存在s_del中void min_num(string &v, int &s,int j,string &s_del){if ( 0 != s){//如果j小于0则从第0个字符开始if (j<0){min_num(v,s,0,s_del);}for (size_t k = j;k<v.size()-1;++k){if (v[k]>v[k+1]){//保存删除的字符s_del += v[k];//将第k个字符删除v.erase(k,1); //递归,从字符串v中从下标k-1开始删除s-1个字符,删除的字符保存在s_del中min_num(v,--s,k-1,s_del);return; //(1)修改后}}} }//从字符串v中删除s个字符,删除的字符保存在s_del中void fun(string &v, int s,string &s_del){if (v.size() < s){cout<<"输入有误!"<<endl;exit(1);}min_num(v,s,0,s_del);//如果删除的字符不足s个if (s>0){s_del += v.substr(v.size()-s, s);v.erase(v.size()-s, s);}//将字符串前面的“0”去掉v.erase(0,v.find_first_not_of('0'));if (v.empty()){v = "0";} }int main(){string v1 = "231183";string v2 = "12435863";string v3 = "1234567";string v4 = "13";string v5 = "10023";string v6 = "100";string s_del="";cout <<"原数字:"<<v1<<'\t';fun(v1,3,s_del);cout<<"删除后的结果:"<<v1<<'\t'<<"删除的字符:"<<s_del<<endl;s_del="";cout <<"原数字:"<<v2<<'\t';fun(v2,3,s_del);cout<<"删除后的结果:"<<v2<<'\t'<<"删除的字符:"<<s_del<<endl;s_del="";cout <<"原数字:"<<v3<<'\t';fun(v3,3,s_del);cout<<"删除后的结果:"<<v3<<'\t'<<"删除的字符:"<<s_del<<endl;s_del="";cout <<"原数字:"<<v4<<'\t';fun(v4,3,s_del);cout<<"删除后的结果:"<<v4<<'\t'<<"删除的字符:"<<s_del<<endl;s_del="";cout <<"原数字:"<<v5<<'\t';fun(v5,3,s_del);cout<<"删除后的结果:"<<v5<<'\t'<<"删除的字符串:"<<s_del<<endl;s_del="";cout <<"原数字:"<<v6<<'\t';fun(v6,3,s_del);cout<<"删除后的结果:"<<v6<<'\t'<<"删除的字符串:"<<s_del<<endl;return 0;}

键盘输入一个高精度的正整数n 去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s 寻找一种方案 使得剩下的数最小

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。