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
- 9.5两种基础算法
- 黑马程序员-----JAVA基础--数组排序的两种算法
- 素数两种算法
- 两种KMP算法
- 【基础算法】排序-复杂排序之一(归并排序的两种优化讨论)
- hdu1102 Constructing Roads(两种基础最小生成树算法)
- 两种最大公约数的算法
- 迷宫问题两种算法
- 两种算法与反思
- 两种常见排序算法
- 两种洗牌算法比较
- 求公约数两种算法
- 两种迷宫生成算法
- 两种排列算法实现
- 最小公倍数两种算法研究
- 欧几里得最大公约数两种算法
- 求凸包的两种算法
- 两种排序算法,java
- LeetCode Longest Valid Parentheses的O(N)解法
- 聊聊并发(八)——Fork/Join框架介绍
- 简单的一些算法,无聊的时候看看,写写一些细节
- 《多线程应用》
- 包含min函数的栈
- 9.5两种基础算法
- Linux内存地址管理概述
- ads 微带线 计算公式
- IT-kvm-kvm动态迁移,
- 阿里面试回来,想和Java程序员谈一谈
- 如何生成 composer.phar 文件
- 对象序列化和反序列化
- 开发过程中dubbo 实体序列化问题
- python 细节 -- init相关