• HDOJ 1106 排序 (字符串处理)


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1106


    简单的字符串处理,注意以下数据即可

    555500000

    0000055555

    0055550000

    下面提供两种做法:

    1.利用C语言库函数strtok(将函数按字符串分割)和atoi(将字符串转成int)

    /*HDOJ1106
    作者:陈佳润
    2013-04-18
    */
    #include<iostream>
    #include<string.h>
    #include<stdlib.h>
    using namespace std;
    
    int cmp ( const void *a , const void *b )
    {
         return *(long int *)a - *(long int *)b;//从小到大
         //return *(int *)b - *(int *)a; //从大到小
    }
    
    
    int main(){
    	char str[1005];
    	long int number[1005];
    	int num,i;
    	//freopen("1.txt","r",stdin);
    	while(scanf("%s",str)!=EOF){
    		char *p;
    		num=0;
    		p=strtok(str,"5");
    		while(p!='\0'){	
    			number[num++]=atoi(p);
    			p=strtok(NULL,"5");
    		}
    		qsort(number,num,sizeof(long int),cmp);
    		for(i=0;i<num;i++){
    			cout<<number[i];
    			if(i!=num-1) cout<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    

    2.标准做法

    /*HDOJ1106
    作者:陈佳润
    2013-04-18
    */
    #include<iostream>
    #include<string.h>
    using namespace std;
    
    int main(){
    	int num,i,j;
    	char str[1005];
    	long int number[1005],temp;
    //	freopen("1.txt","r",stdin);
    	while(scanf("%s",str)!=EOF){
    		memset(number,0,sizeof(number));
    		num=0;//第num个数
    		i=0;//字符串下标
    		while(str[i]=='5') i++;//消除刚开始出现的5
    
    		for(;str[i]!=0;i++){
    			if(str[i]=='5'&&(str[i+1]=='5'||str[i+1]==0)){//消除中间和后面的5
    				continue;
    			}
    			if(str[i]=='5'){//遇上5,则开始下一个数字的计算
    				num++;
    				continue;
    			}
    			number[num]*=10;
    			number[num]+=(str[i]-48);
    		}
    		for(i=0;i<=num;i++){//排序
    			for(j=i+1;j<=num;j++){
    				if(number[i]>number[j]){
    					temp=number[i];
    					number[i]=number[j];
    					number[j]=temp;
    				}
    			}
    		}
    		for(i=0;i<=num;i++){//输出
    			cout<<number[i];
    			if(i!=num)
    				cout<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    



  • 相关阅读:
    FZU-SE-K 第一次累计得分排行榜
    OO第四次总结
    OO第二次总结
    面向对象构造与设计第一次总结
    软件工程实践2019第四次作业
    蹒跚的第一步
    学期导图
    一篇随笔
    【软工】提问回顾与个人总结
    【软工】结对项目博客
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3028454.html
Copyright © 2020-2023  润新知