码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 2054 A == B ? 水题

时间:2015-05-10 19:00:07      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:c   c++   acm   算法   编程   

分析:水题,主要是要注意几个细节。

技术分享

#include<iostream>
using namespace std;

char a[100005],A[100005];
char b[100005],B[100005];

void Process(char* p,int count,char* p2)
{
	int pos;
	bool is_real;
	int i=0,k=0,j;

label:
	while(*(p+i)!='\0' && *(p+i)=='0')
		i++;
	if(*(p+i)=='\0')
	{
		p2[0]='0',p2[1]='\0';
		return ;  //为0
	}

	if(*(p+i)=='-')
	{
		p2[k++]='-';
		i++;
		goto label;
	}

	if(*(p+i)=='+')
	{
		i++;     //处理正数
		goto label;
	}

	while(*(p+i)!='\0' && *(p+i)!='.') p2[k++]=p[i],i++;

	if(*(p+i)=='\0')
	{
		p2[k]='\0';
		return ;
	}

	is_real=false;
	for(j=count-1;j>i;j--)
		if(is_real || p[j]!='0')
		{
			if(!is_real) pos=j;
			p2[k+j-i]=p[j];
			is_real=true;
		}

	if(!is_real)
		p2[k]='\0';
	else
		p2[k]='.',p2[k+pos-i+1]='\0';
}

bool IsEqual()
{
	Process(a,strlen(a),A);
	Process(b,strlen(b),B);

	if(!strcmp(A,B)) return true;
	else return false;
}

int main()
{
	while(scanf("%s %s",a,b)==2)
	{
		if(IsEqual()) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
    return 0;
}


HDU ACM 2054 A == B ? 水题

标签:c   c++   acm   算法   编程   

原文地址:http://blog.csdn.net/a809146548/article/details/45622941

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!