排排序
来源:互联网 发布:7001端口 编辑:程序博客网 时间:2024/04/27 14:31
FJNU.1902
Description
给定一个字符串str,和两个字符a,b,将str中ASCII码处于a,b之间(含a b)的字符按ASCII码从小到大排序,其他字符位置不变.输出排序的字符串
Input
输入只有两行
第一行给出一个字符串str
第二行给出两个字符a,b,以一个空格间隔.
(字符串长度小于30000)
Output
输出只有一行,给出排序后的字符串
Sample Input
FJNU contest 1062 for xi'an 2006 .
0 9
Sample Output
FJNU contest 0001 for xi'an 2266 .
Hint
原字符串 FJNU contest 1062 for xi'an 2006 . 中处于'0'与'9'之间的字符有
1062 2006
1 0 6 2 2 0 0 6
将之排序后为 0 0 0 1 2 2 6 6
0001 2266
其余字符不变,于是新字符串为
FJNU contest 0001 for xi'an 2266 .
My Program
#include<stdio.h>
#include<string.h>
void paixu(char instr[])
...{
int i,j;char temp;
for(i=0;instr[i];i++)
for(j=i;instr[j];j++)
if(instr[i]>instr[j])
...{
temp=instr[i];
instr[i]=instr[j];
instr[j]=temp;
}
}
int main()
...{
char str[30000],a,b,instr[30000],temp;
int i,j;
gets(str);
scanf("%c %c",&a,&b);
if(a>b) ...{temp=a;a=b;b=temp;}
for(i=0,j=0;str[i];i++)
if((str[i]>=a)&&(str[i]<=b)) instr[j++]=str[i];
paixu(instr);
for(i=0,j=0;instr[i];j++)
if((str[j]>=a)&&(str[j]<=b)) str[j]=instr[i++];
printf("%s ",str);
return 0;
}
#include<string.h>
void paixu(char instr[])
...{
int i,j;char temp;
for(i=0;instr[i];i++)
for(j=i;instr[j];j++)
if(instr[i]>instr[j])
...{
temp=instr[i];
instr[i]=instr[j];
instr[j]=temp;
}
}
int main()
...{
char str[30000],a,b,instr[30000],temp;
int i,j;
gets(str);
scanf("%c %c",&a,&b);
if(a>b) ...{temp=a;a=b;b=temp;}
for(i=0,j=0;str[i];i++)
if((str[i]>=a)&&(str[i]<=b)) instr[j++]=str[i];
paixu(instr);
for(i=0,j=0;instr[i];j++)
if((str[j]>=a)&&(str[j]<=b)) str[j]=instr[i++];
printf("%s ",str);
return 0;
}
YOYO's Note:
先把所有在a,b间的字符单独存在某数组中进行排序,
然后再找一次在a,b间的字符按顺序替换为排序好的字符……
- 排排序
- 排序---快排-希尔排序-桶排
- fjnu 1902 排排序
- 年龄排排序
- 【c++排序】快排
- 排序-快排
- 排序算法--快排
- 排序 之 快排
- 算法 排序 快排
- 排序--快排
- 排序算法(桶排)
- 快排 快速排序
- 交换排序------快排
- 排序之 快排
- 【排序】快排
- 算法--排序--快排
- 算法--排序--堆排
- 排序之-------堆排
- Elevator
- oracel总结
- 集合
- 数字统计
- servlet学习
- 排排序
- 难忘的2.14
- C# 取MAC地址
- 1+1猜想
- weblogic的一些版本下载地址
- dojo 查找页面对象
- 创建与删除SQL约束或字段约束
- dojo采用rpc方式传递表单元素
- DOM解析轻松入门(二)--DOM实现增删改查