首页 > 学院 > 开发设计 > 正文

hdu 1106排序

2019-11-08 02:41:56
字体:
来源:转载
供稿:网友
#include<iostream>#include<algorithm>#include <cstdio>#include <string>#include <cstring>using namespace std;const int MAX_NUM=1000;void merge(long num[],int n);int main(){	string str;	while(cin>>str)	{		int len=str.size();		long num[MAX_NUM];		int i=0,j,temp;		for(j=0;j<MAX_NUM;j++)			num[j]=0;		for(j=0;j<len;)		{			temp=str[j]-'0';			if(temp!=5)			{				num[i]=num[i]*10+temp;				j++;			}			else			{				if(j)					i++;				while(str[j]=='5')					j++;				if(j>len-1)					i--;			}		}		merge(num,i+1);		cout<<num[0];		for(j=1;j<=i;j++)			cout<<" "<<num[j];		cout<<endl;	}	return 0;}void merge(long num[],int n){	long temp;	int k;	for(int i=0;i<n;i++)	{		k=i;		temp=num[i];		for(int j=i;j<n;j++)			if(num[k]>num[j])				k=j;			if(k!=i)			{				num[i]=num[k];				num[k]=temp;			}	}}
#include<iostream>  #include<cstdio>  #include<cstring>  #include<string>  #include<cmath>  #include<algorithm>  using namespace std;  #define N 10010  char s[N];  int a[N];    int change(string s)  {      int len = s.length();      int sum = 0;      for(int i = len - 1, j = 0; i >= 0; --i, ++j)          sum += (int)(s[i] - '0') * pow(10.0, j);      return sum;  }    int main()  {      int len, num;      string ans;      while(scanf("%s", s) != EOF)      {          len = strlen(s);          num = 0;          ans = "";          for(int i = 0; i < len; ++i)          {              if(s[i] != '5')              {                  ans += s[i];                  if(i == len - 1) //不是5结尾的                      a[num++] = change(ans);              }              else if(s[i] == '5' && s[i - 1] != '5' && i != 0) //是5且不能一堆5且5不能为第一个              {                  a[num++] = change(ans);                  ans = "";              }          }          sort(a, a + num);          for(int i = 0; i < num - 1; ++i)              PRintf("%d ", a[i]);          printf("%d/n", a[num - 1]);      }      return 0;  }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表