zoukankan      html  css  js  c++  java
  • 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;
    }
    



  • 相关阅读:
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告六
    第七周
    第六周
    课程总结
    第十四周课程总结&实验报告
    第十三周总结
    第十二周总结
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3028454.html
Copyright © 2011-2022 走看看