[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; } }之前的代码杂乱无章而且很长,改版后的代码简洁并且思路一目了然。
希望对大家有帮助,谢谢各位!!