刚哥遇到了感情问题(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 上一集我们讲到 作为工作室老大的刚哥遇到很多女生的追求,你帮他个挑选了个英语成绩不错的对象。在你
2017-07-19 10:55
951 查看
# include <stdio.h>
# define N 201
char A[][7]={"apple","banana","orange"}; //A->B
char B[][5]={"miss","love","kiss"};
int S[]={4,5,5},num,D[2]
;
char C
;
int BF(char a[],char b[],int c[]);//返回b字符串在a中的个数 c存储b在a中的下标 从c[num]开始存储 num为全局变量
void change(int *a,int *b);//交换函数
void Qsort(int A[]
,int left,int right);//快速排序 升序
int main(){
int i,j,k;
//freopen("AAA.txt","r",stdin);
while(gets(C)){
for(i=j=num=0;i<3;i++)//用 A[i]匹配C 返回匹配的个数
{
k=BF(C,A[i],D[0]);//k记录A[i]匹配的个数
while(k--)D[1][j++]=i;//D[1]用来存储i
}
Qsort(D,0,num-1);//以A[0]升序 从下标0--- num-1 一共num个
for(i=j=0;C[i];i++){//输出
if(i==D[0][j]&&j<num)
{
printf("%s",B[D[1][j]]);
i+=S[D[1][j++]];
}
else printf("%c",C[i]);
}
printf("\n");//输出回车符
}
return 0;
}
int BF(char a[],char b[],int c[]){//返回b字符串在a中的个数 c存储b在a中的下标 从c[num]开始存储 num为全局变量
int i=0,j=0,k=num;//k存储当前已经匹配的个数
do{
if (b[j]&&a[i++]==b[j])++j;//如果匹配成功 继续向下匹配
else
{
b[j]?(i-=j):(c[num++]=i-j);//b字符串到头了吗?如果到头了即b[j]=0 此时 c存储匹配下标 否则i回溯
j=0;//无论匹配成功与否 b都要重新和a检测
}
}while(a[i-1]);
return num-k;//返回b在a中匹配的个数
}
void change(int *a,int *b){//交换函数 交换a b的值
int c=*a;
*a=*b;
*b=c;
}
void Qsort(int A[]
,int left,int right)//不需要知道内部 只需要知道是升序就行了
{
int i=left,j=right,temp=A[0][left];
if(left>=right) return;
while(i!=j)
{
while(A[0][j]>=temp && i<j) j--;
while(A[0][i]<=temp && i<j)i++;
if(i<j)
{
change(&A[0][i],&A[0][j]);
change(&A[1][i],&A[1][j]);
}
}
change(&A[0][left],&A[0][i]);
change(&A[1][left],&A[1][i]);
Qsort(A,left,i-1);
Qsort(A,i+1,right);
}
# define N 201
char A[][7]={"apple","banana","orange"}; //A->B
char B[][5]={"miss","love","kiss"};
int S[]={4,5,5},num,D[2]
;
char C
;
int BF(char a[],char b[],int c[]);//返回b字符串在a中的个数 c存储b在a中的下标 从c[num]开始存储 num为全局变量
void change(int *a,int *b);//交换函数
void Qsort(int A[]
,int left,int right);//快速排序 升序
int main(){
int i,j,k;
//freopen("AAA.txt","r",stdin);
while(gets(C)){
for(i=j=num=0;i<3;i++)//用 A[i]匹配C 返回匹配的个数
{
k=BF(C,A[i],D[0]);//k记录A[i]匹配的个数
while(k--)D[1][j++]=i;//D[1]用来存储i
}
Qsort(D,0,num-1);//以A[0]升序 从下标0--- num-1 一共num个
for(i=j=0;C[i];i++){//输出
if(i==D[0][j]&&j<num)
{
printf("%s",B[D[1][j]]);
i+=S[D[1][j++]];
}
else printf("%c",C[i]);
}
printf("\n");//输出回车符
}
return 0;
}
int BF(char a[],char b[],int c[]){//返回b字符串在a中的个数 c存储b在a中的下标 从c[num]开始存储 num为全局变量
int i=0,j=0,k=num;//k存储当前已经匹配的个数
do{
if (b[j]&&a[i++]==b[j])++j;//如果匹配成功 继续向下匹配
else
{
b[j]?(i-=j):(c[num++]=i-j);//b字符串到头了吗?如果到头了即b[j]=0 此时 c存储匹配下标 否则i回溯
j=0;//无论匹配成功与否 b都要重新和a检测
}
}while(a[i-1]);
return num-k;//返回b在a中匹配的个数
}
void change(int *a,int *b){//交换函数 交换a b的值
int c=*a;
*a=*b;
*b=c;
}
void Qsort(int A[]
,int left,int right)//不需要知道内部 只需要知道是升序就行了
{
int i=left,j=right,temp=A[0][left];
if(left>=right) return;
while(i!=j)
{
while(A[0][j]>=temp && i<j) j--;
while(A[0][i]<=temp && i<j)i++;
if(i<j)
{
change(&A[0][i],&A[0][j]);
change(&A[1][i],&A[1][j]);
}
}
change(&A[0][left],&A[0][i]);
change(&A[1][left],&A[1][i]);
Qsort(A,left,i-1);
Qsort(A,i+1,right);
}
相关文章推荐
- 背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果
- 鸡蛋栈 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 继队列之后,我们又来学习一种新的数据结构——栈。将队列的头部封闭后,就构成了栈这种数据结构,原来队列头部就
- 九九乘法表 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 小时候学过的九九乘法表也许将会扎根于我们一生的记忆,现在让我们重温那些温暖的记忆,请编程输出九九乘
- 最大长方形(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Largest Rectangle in a Histogram A histogram is a p
- 超级台阶 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一
- 两点距离 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 输入两点坐标(X1,Y1),(X2,Y2)(0<=x1,x2,y1,y2<=1000),计算并输出两点间的距离。
- 无线网络覆盖 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆盖郑州大学。 现在学校给了他一个机
- 素数距离问题 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数
- 石子合并(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆
- nyoj 36 最长公共子序列 dp问题最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共
- 合纵连横 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 乱世天下,诸侯割据。每个诸侯王都有一片自己的领土。但是不是所有的诸侯王都是安分守己的,实力强大的诸侯国会设法吞并
- 石子合并(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆
- 快速查找素数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。 输入 给出一个正整数数N(N<=
- 邮票分你一半 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明。每张邮票上都有分值,他们想把这些邮票分成两
- 完全覆盖 时间限制:2000 ms | 内存限制:65535 KB 难度:3 描述 有一天小董子在玩一种游戏----用2*1或1*2的骨牌把m*n的棋盘完全覆盖。但他感觉游戏过于简单,于是就随机生
- 韩信点兵 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只
- Oh, my goddess 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 Shining Knight is the embodiment of justice an
- 比较字母大小 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 任意给出两个英文字母,比较它们的大小,规定26个英文字母A,B,C.....Z依次从大到小。
- 南阳oj 九九乘法表 时间限制:1000 ms | 内存限制:65535 KB 难度:1
- 独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总