9.5两种基础算法

来源:互联网 发布:搭车去柏林 知乎 编辑:程序博客网 时间:2024/06/11 03:05

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

一、【累加法】类型诸如:

num(1)+num(2)+num(3)+..........+num(n-1)+num(n)

求其前N项之和的编程题

累加型算法:

若设 i 为循环变量,s 为前 n 项之和,则程序的基本结构为:

int s = 0;//前n项之和

int n = 10;//一共有10项

num =*****;// 每一项的值(重点在与表达出每一项的值)

for ( int i = 1 ; i < n; i++);

s = s + num;

例一:(int整型类)

//求 1 + 2 + 3 + 4 + 5  + ......+ 99 + 100 的和;

/** * @author ygr */public class Summation {//求 1 + 2 + 3 + 4 + 5  + ......+ 99 + 100 的和;public static void main(String[] args) {int sum = 0;int i =1;for(i=1;i<=100;i++){sum=sum+i;}System.out.println("1 + 2 + 3 + 4 + 5  + ......+ 99 + 100 的和:"+sum);}}



例二:(分数类型累加)

<pre name="code" class="java">/** * @author ygr */public class Summation2 {//求 1-1/2+1/3-1/4 + ....+1/99-1/100 的和public static void main(String[] args) {double sum = 0; // 总和double item = 0; // 某一项值int q = -1;//将-1赋值给q用作后面转换负号for (int i=1; i <= 100; i++) {q = -q;//用这种方法将以后的每一项的负号转换item =(double) q/i;//采用double类型强转sum = sum + item;}System.out.println("1-1/2 +1/3-1/4 + ....+1/99-1/100的和是 :" + sum);}}



例三:

<span style="font-size:24px;">/** * 求和2 + 22 + 222 + 2222 + ....10项的和 * @author ygr * */public class SumDemo {public static void main(String[] args) {long s = 0;int n = 10;long item = 0;for (int i = 1; i <= n; i++) {item = (long)10*item+2;s = s + item;}System.out.println("2 + 22 + 222 + 2222 + ....10项和是 :" + s);}}</span><span style="font-size: 18px;"></span>




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

二:【枚举法】(穷举法):

“笨人之法”:把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。

【例一】 百元买百鸡:用一百元钱买一百只鸡。已知公鸡5元/只,母鸡3元/只,小鸡1元/3只。

分析;

这是个不定方程——三元一次方组的问题(三个变量,两个方程)

x+y+z=100;

5x+3y+z/3=100;

设公鸡为X只,母鸡Y只,小鸡Z只。

<span style="font-size:24px;">//百元买百鸡:用一百元钱买一百只鸡。已知公鸡5元/只,母鸡3元/只,小鸡1元/3只(难点)。/** * @author ygr */public class CenturyBuyChook {public static void main(String[] args) {for (int x = 0; x <= 100; x++) {for (int y = 0; y <= 100; y++) {for (int z = 0; z <= 100; z++) {if ((x + y + z == 100) && (5 * x + 3 * y + z / 3.0 == 100)&& (z % 3 == 0)) {System.out.println("公鸡 :" + x + "只," + " 母鸡  :" + y+ " 只," + " 小鸡 :" + z);}}}}/*for (int x = 0; x <= 100; x++) {for (int y = 0; y <= 100; y++) {int z = 100 - x - y;if (5 * x + 3 * y + z / 3.0 == 100) {System.out.println("公鸡 :" + x + "只," + " 母鸡  :" + y + " 只:"+ " 小鸡 :" + z);}}}*/}}</span>






2 0
原创粉丝点击