多项式加法 中国大学mooc翁恺《零基础学Java语言》第5周编程题 我为什么只能通过两个例子

WWEQQCF 2020-05-16 05:27:11
package weqeeq;
import java.util.Scanner;

public class Practice1{

static int k,h,f;

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int[] ans = new int[101];// 下标对应幂次,内容对应系数

int[][] ploy1 = new int[101][2];//第一轮输入,以0为截止
int[][] ploy2 = new int[101][2];//第二轮输入,以0为截止

int[] cunm1=new int[102];//存放所有幂次的类型
int[] cunm2=new int[102];//将所有幂次从大到小存放

int times;// 每项前的系数
int pow;// 幂次

int cnt_1 = 0;
while (true) {
pow = sc.nextInt();
times = sc.nextInt();
ploy1[cnt_1][0] = pow;
ploy1[cnt_1][1] = times;
cnt_1++;
if (pow == 0)
break;
}
int cnt_2 = 0;
while (true) {
pow = sc.nextInt();
times = sc.nextInt();
ploy2[cnt_2][0] = pow;
ploy2[cnt_2][1] = times;
cnt_2++;
if (pow == 0)
break;
}
for (int i = 0; i < cnt_1; i++) {
ans[ploy1[i][0]] += ploy1[i][1];
cunm1[i]=ploy1[i][0];
k=i;
}
for (int i = 0; i < cnt_2; i++) {

for(int j=0;j<cnt_1;j++)if(ploy1[i][0]!=ploy2[i][0]) {cunm1[k++]=ploy2[i][0];}
ans[ploy2[i][0]] += ploy2[i][1];
}
cunm2[0]=cunm1[0];
h=0;
f=1;
TT:
for(;h<k;h++) {

for(int j=h+1;j>0;j--) {
if(cunm2[j]==cunm1[h])continue TT;
}
cunm2[f]=cunm1[h];
f++;
}

for(int j=0;j<101;j++)
for(int i=1;i<=cunm2.length-2;i++) {
if(cunm2[i]<cunm2[i+1]) {
int temp=cunm2[i];
cunm2[i]=cunm2[i+1];
cunm2[i+1]=temp;
}
}

String resurt="";

for(int i=1;i<=cunm2.length-2;i++) {
if(ans[cunm2[i]]!=0)
if(cunm2[i]!=0) {
if(cunm2[i]!=1) {

if(ans[cunm2[i]]==1) {

String temp="x"+cunm2[i];

if(ans[cunm2[i+1]]<0);
else if(ans[cunm2[i+1]]>0) temp=temp+"+";
resurt=resurt+temp;}

else if(ans[cunm2[i]]==-1) {
String temp="-x"+cunm2[i];

if(ans[cunm2[i+1]]<0);
else if(ans[cunm2[i+1]]>0) temp=temp+"+";
resurt=resurt+temp;
}
else {
String temp=ans[cunm2[i]]+"x"+cunm2[i];
if(ans[cunm2[i+1]]<0);
else if(ans[cunm2[i+1]]>0) temp=temp+"+";
resurt=resurt+temp;
}
}
}
}

if(ans[1]!=0)if(ans[0]>=0)
System.out.println(resurt=resurt+ans[1]+"x+"+ans[0]);
else System.out.println(resurt=resurt+ans[1]+"x"+ans[0]);
else if(ans[0]==0 && resurt!="") System.out.println(resurt=resurt+"+"+ans[0]);
else System.out.println(resurt=resurt+ans[0]);
}
}
...全文
100 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
资源下载链接为: https://pan.quark.cn/s/2dfc9b0bbfb0 课程大纲共十二讲:第一讲是基本概念,包括数据结构、算法及最大子列和问题实例;第二讲线性结构,涉及线性表、堆栈、队列等及多项式加法实例,还有小白专场的多项式运算 C 实现;第三到五讲是树(上中下),涵盖树的表示、二叉树、二叉搜索树、堆、哈夫曼树等,附多个小白专场的 C 实现;第六到八讲是图(上中下),包括图的概念、遍历、最短路径、最小生成树等,有应用实例和小白专场;第九到十讲是排序(上下),涉及多种排序算法及比较;第十一讲散列查找,包括散列表、函数构造等及词频统计实例;第十二讲是综合习题选讲。 预备知识方面,需过一门编程语言,懂 C 语言更易接受,过离散数有帮助但非必需。 证书要求:编程练习需在 PTA 获 200 分以上;总评成绩由期中(40%)和期末(60%)构成,若期末成绩高于期中则期末占 100%;总评 60 分以上可获合格证书。2016 年冬季或 2017 年春季 PAT 甲级考试 70 分以上,且已获合格证书者,可获优秀证书。合格证书获得者中,总评 80-100 分可领 50 元 PAT 代金券,60-80 分可领 20 元,全国考点通用,一年有效。 常见问题:非计算机专业、数不好(会算术即可)的人,只要会编程就能;不会编程的需先基础(如翁恺老师的 C 语言课)。每习时间平均 4-8 小时,基础不同时间不同,可先在 PTA 自测。程序提交到 PTA 出错,多因自测数据简单或输出不规范,需用标准输入输出。PTA 测试数据不公布,遇卡壳可去论坛求助。PAT 是编程能力考试,分多个级别,甲级证书对就业有帮助,多家企业认可其成绩。

58,448

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧