9.5两种基础算法

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

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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值