趣味编程100例(部分)(5)

2019-03-11 15:23

right=right+w2;

else right=right+\

f=false; //右侧出现过数值,修改f标志位

break; }

switch //根据状态,修改表达式

{

case //状态-1:左侧,修改左侧表达式

left=left+\

break; case //状态1:右侧,修改右侧表达式

(a4)

-1:

1:

if(f) right=right+w1;

else right=right+\

f=false; //右侧出现过数值,修改f标志位

break; }

System.out.println(left+\ }

left=\ //下次循环,清空

right=\

(5)完整程序

现在我们就需要把刚才的程序进行组合,构成我们的完整程序:

public class ch2_7_3 {

/**

* @param args */

public static void main(String[] args) {

int weight1,weight2,weight3,weight4,d1,d2,d3,d4,x,flag; int w1=0,w2=0,w3=0,w4=0;

System.out.printf(\

for(weight1=1;weight1<=40;weight1++) //穷举

for(weight2=weight1+1;weight2<=40-weight1;weight2++)

//注意:内循环起始值为外循环值加1

for(weight3=weight2+1;weight3<=40-weight1-weight2; weight3++)

if((weight4=40-weight1-weight2-weight3)>=weight3) {

for(flag=1,x=1;x<41&&flag==1;x++)

//重物在天平左面,d的各种状态包括:-1:砝码在天平左面; 1:砝码在右面;0:不用该砝码

for(flag=0,d1=1;d1>-2;d1--) //三种状态都循环一遍

for(d2=1;d2>-2&&flag==0;d2--)

for(d3=1;d3>-2&&flag==0;d3--)

for(d4=1;d4>-2&&flag==0;d4--) //找到组合,修改标志

if(x==weight1*d1+weight2*d2+ weight3*d3+weight4*d4)

flag=1;

if(flag==1)//flag为1代表组合找到了,为0代表组合没找到

{

System.out.printf(\ w1=weight1; //找到组合,为下一步输出做准备 w2=weight2; w3=weight3; w4=weight4;

}

}

// System.out.printf(\

String left = \ //表达式初始化

//a1a2a3a4

for(int i=1;i<=40;i++) //循环40次,打印出每种情况

for(int a1=-1;a1<=1;a1++) //三种状态都循环一遍 for(int a2=-1;a2<=1;a2++)

for(int a3=-1;a3<=1;a3++)

for(int a4=-1;a4<=1;a4++) {

if(i==a1*w4+a2*w3+a3*w2+a4*w1) //如果相等,打印出结果 {

boolean f=true; //表达式右侧第一项标志 left=i+\ switch (a1){ //根据状态,修改表达式

case -1://状态-1:左侧,修改左侧表达式

left=left+\

break;

case 1: //状态1:右侧,修改右侧表达式

if(f) //如果是右侧第一项,数值前不用加“+”

right=right+w4;

else //如果不是右侧第一项前加“+”

right=right+\

f=false;

//右侧出现过数值,修改f标志位

break; }

(a2){ //根据状态,修改表达式

//状态-1:左侧,修改左侧表达式

left=left+\

数值 switch case -1:

, break;

case 1: //状态1:右侧,修改右侧表达式

// right=right+\

if(f) //如果是右侧第一项,数值前不用 加“+”

right=right+w3;

else

right=right+\

f=false;//右侧出现过数值,修改f标志位

break; }

(a3){//根据状态,修改表达式

//状态-1:左侧,修改左侧表达式

left=left+\

break;

//状态1:右侧,修改右侧表达式

if(f) //如果是右侧第一项,数值前不用加“+”

right=right+w2;

else

right=right+\

f=false;//右侧出现过数值,修改f标志位

break;

(a4){//根据状态,修改表达式

switch case -1: case 1: }

switch case -1:

//状态-1:左侧,修改左侧表达式

left=left+\

break;

case 1: //状态1:右侧,修改右侧表达式

if(f) //如果是右侧第一项,数值前不用 加“+”

right=right+w1;

else

right=right+\

f=false;//右侧出现过数值,修改f标志位

break;

} System.out.println(left+\

//输出表达式

}

left=\ //下次循环,清空

right=\ } } }

2.9 一维多项式计算 1.问题描述

对于一维多项式,就是包含一个变量的多项式,一个普遍的一维多项式示例如下: P(x)=an–1xn–1+an–2xn–2+?+a1x+a0

一维多项式求值就是对于上述多项式,计算在指定的x处的函数值。例如:


趣味编程100例(部分)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南昌二中参观学习心得体会

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: