~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一、【累加法】类型诸如:
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>