0
已解决
赵逸凡
初级启示者
初级启示者
#include<bits/stdc++.h>
using namespace std;
const int maxn=1600;
int z=0,c=0,d=0,la[maxn],flag=0,f=0;
stringstream lb;
char x,y;
struct S
{
string a,b;
}s;
void in()
{
getline(cin,s.a);
cin>>x>>y;
}
int main()
{
in();
for(int i=0;i<s.a.size();i++)
{
if(s.a[i]==x&&flag==0)
{
c=i;
flag=1;
}
if(s.a[i]==y&&f==0)
{
d=i;
f=1;
}
}
for(int i=c;i<=d;i++)s.b[z++]=s.a[i];
for(int i=0;i<s.b.size();i++)
{
lb<<s.b[i];
lb>>la[i];
lb.clear();
}
sort(la,la+s.b.size());
for(int i=0;i<s.b.size();i++)
{
lb<<la[i];
lb>>s.b[i];
lb.clear();
}
z=0;
for(int i=x-1;i<=y-1;i++)s.a[i]=s.b[z++];
cout<<s.a;
return 0;
}
1486为什么没有任何操作???
我的思路是:
输入,搜索x,y的坐标,在从这个x-y的区间里提取出来放到另一个字符串中,再把这个字符串转换到另一个整形数组里,排序这个整形数组,最后放进原字符串。求救
赵逸凡在2018-11-18 22:34:33追加了内容
SOS
0
已采纳
陶旭杰
中级光能
中级光能
我的思路:
首先将输入的字符串中,ascll为a~b的字符存到一个字符数组里,将一个整形数组a[i]变为1。
然后sort排序新字符数组,写一个cmp。
输出时如果a[i]==1就输出新字符数组[++j]
否则输出原字符串[i]
好了,废话不多说,上代码!
string s;
char num[10001];
char s1,s2;
int a[10001],j=0,l=0;//定义
bool cmp(char x,char y){
return x<y;
}//cmp函数定义方法,要在主函数外定义
for(int i=0;i<s.size();i++){
if(s[i]>=s1&&s[i]<=s2){
num[++l]=s[i];
a[i]=1;
}
}//如果是在a~b之间,装到新数组里
sort(num+1,num+l+1,cmp);//sort排序,调用cmp函数
for(int i=0;i<s.size();i++){
if(a[i]==1){
cout<<num[++j];
}
else{
cout<<s[i];
}
} //分两种情况输出
//最后:AC!
祝你AC!
陶旭杰在2018-12-16 10:01:23追加了内容
look:
0
0
0
0