1082 Read Number in Chinese (25 分)

这字符串处理比较难了
看题目戳这

这个思路是算法笔记上机训练里的

不然用我的方法两百行模拟会死人的

就是边读边输出的方法

注意空格的输出

#include<bits/stdc++.h>
using namespace std;
string num[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"},wei[]={"Shi","Bai","Qian","Wan","Yi"};
int main(){
	string str;
	cin>>str;
	int len=str.size(),l=0,r=len-1;
	if(str[0]=='-'){
		l++;
		printf("Fu");
	}
	while(l+4<=r){
		r-=4;
	}
	while(l<len){
		bool flag=0,isprint=0;
		while(l<=r){
			if(l>0&&str[l]=='0'){
				flag=1;
			}else {
				if(flag){
					printf(" ling");
					flag=0;
				}
				
				if(l>0){
					printf(" ");
				}
				printf("%s",num[str[l]-'0'].c_str());
				isprint=1;
				if(l!=r){
					printf(" %s",wei[r-l-1].c_str());
				}
			}
			l++;
		}
		if(isprint&&r!=len-1){
			printf(" %s",wei[(len-1-r)/4+2].c_str());
		}
		r+=4;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43982216/article/details/89738168