Advertisement

浙江大学软件学院2020年保研上机模拟练习 7-1.Standard Form of Polynomial (20分)

阅读量:

7-1.Standard Form of Polynomial (20分)

在这里插入图片描述
在这里插入图片描述

解析:这道题可以认为是简单模拟类别的题目,可以利用dfs来进行求解。

复制代码
    #include<bits/stdc++.h>
    using namespace std;
    vector<int>roots,cofes;//roots用来存储根,cofes用来存储多项式的系数,cofes[0]代表a0;
    int n;
    void dfs(int cur, int curpond, int curx){
    	if(cur == n){
    		cofes[curx] += curpond;//当cur==n时,代表此时n个括号都选择结束了;
    	}
    	else{
    	//如果选择括号内的值,那么curpond*-roots[cur],curx代表x的幂数,此时不变;
    		dfs(cur + 1, -curpond * roots[cur], curx);
    	//如果选择括号内的x,那么curpond不变,curx加1,即幂数加1;
    		dfs(cur + 1, curpond, curx+1);
    	}
    }
    int main(){
    	cin>>n;
    	roots.resize(n);//对roots进行初始化,申请n个空间
    	cofes.resize(n+1,0);//对cofes进行初始化,申请n+1个空间,并且全部赋初值为0;
    	for(int i = 0; i < n; i++) cin >> roots[i];//输入方程组的根;
    	dfs(0,1,0);
    	for(int i  = n-1; i >= 0; i--){
    		cout<<cofes[i];//输出各个系数;
    		if(i) cout<<" ";//如果不是最后一个输出的系数(即a0) 那么输出空格;
    	}
    }

全部评论 (0)

还没有任何评论哟~