[NOIP2009]多项式输出

这道题是中学的竞赛题,内容不是很难但出题很灵活,但把我搞得够呛。我对比了我和大神的代码,发现了两点重要的区别:
1.大神在写代码之前会分析题目,把解题思想分为各个模块(比如:模块1:处理符号,模块2:处理系数,模块3:处理指数……)。
2.大神在写完代码后如果报错了可以很快找出自己的错误,因为他可以根据自己错误点迅速的锁定出错的模块并加以改正。
而我在写代码时是胡子眉毛一把抓,一来很难保证不出错,二来出错了很难锁定错误代码的位置。

之前代码:
#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	int a[105];
	for(int i=n;i>=0;i--){
		//TODO
		cin>>a[i];
	}
	for(int i=n;i>=0;i--){
		//TODO
		if(a[i]==0){
			continue;
		}
		if(n==i){
			if(a[i]>0){
				if(a[i]==1){}
				else cout<<a[i];
			}
			if(a[i]<0){
				if(a[i]==-1){cout<<"-";}
				else cout<<a[i];
			}
		}
		else{
			if(a[i]>0){
				if(a[i]==1){
					if(i==0){
						cout<<"+"<<a[i];
					}
					else cout<<"+";
				}
				else cout<<"+"<<a[i];
			}
			if(a[i]<0){
				if(a[i]==-1){
					if(i==0){
						cout<<a[i];
					}
					else cout<<"-";
				}
				else cout<<a[i];
			}
		}
		if(i==1){
			cout<<"x";
		}
		else{
			if(i==0){}
			else cout<<"x^"<<i;
		}
	}
} 

改版代码:
#include<iostream>
using namespace std;
int main(){
	int n;   
	cin>>n;
	int a[105];  //多项式各项的系数 
	for(int i=n;i>=0;i--){
		cin>>a[i];
	}
	for(int i=n;i>=0;i--){
		if(a[i]==0) continue;   //系数为零则可视为没有这一项 
		//1.处理符号
		if(a[i]>0&&n==i){}
		if(a[i]>0&&n!=i) cout<<"+";
		if(a[i]<0) cout<<"-";
		
		//2.处理系数
		if(i!=0&&(a[i]==1||a[i]==-1)){}
		else cout<<abs(a[i]);
		
		//3.处理指数
		if(i==0||i==1){
			if(i==0){}
			if(i==1) cout<<"x";
		}
		else cout<<"x^"<<i;
	}
}
之前的代码杂乱无章而且很长,改版后的代码简洁并且思路一目了然。
希望对大家有帮助,谢谢各位!!
全部评论

相关推荐

07-10 14:08
已编辑
江西农业大学 Java
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务