问题标题: 酷町堂:求助SOS,@LLR,JWZ

0
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
桑烁
桑烁
高级光能
高级光能

你想的太麻烦了,直接用字符串判断保留空格就行了

我要回答