目录
1.求值法
2.递推法
3.递归法
4.枚举法
5.分治法
6.模拟法
7.贪心法
8.回溯法
9.构造法
10.动态规划法
1.求值法
1.1解题思想 :
根据题目给出的条件,运用基本的顺序,选择,循环控制结构解决问题的方法
1.2举例:
判断是否是闰年
进制间的转换
`````````
1.3代码举例:
题目:从键盘输入学生成绩,找出最高分,并且输出学生等级
90-100:A 80-90:B 70-80:C 其余D
package arrar; import java.util.Scanner; public class text2 { public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.print("请输入学生人数:"); int count = scan.nextInt(); System.out.printf("请分别输入%d个学生成绩",count); int[] arr = new int[count]; for(int i = 0; i运行结果:(java实现,可自由输入)
请输入学生人数:3
请分别输入3个学生成绩89 34 54
最高分是:89
学生0的分数是89,级别是A
学生1的分数是34,级别是D
学生2的分数是54,级别是DProcess finished with exit code 0
2.递推法2.1解题思想:
根据之前的一步求解下一步和上一步之间的关系
2.2举例:
杨辉三角问题
回文数问题
`````````
2.3代码举例:
题目:回文数
package arrar; //回形数 import java.util.Scanner; public class text6 { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); System.out.printf("输入数字是%d",num); System.out.println(" "); int[][] arr = new int[num][num]; int count = 1; int count1 = 1; int count2 = 0; int count3 = 0; int count4 = 0; int count5 = num-1; while(count != (num*num+1)){ switch(count1){ case 1: arr[count2][count3] = count; count++; count3++; count4++; if(count4 == count5){ count4 = 0; count1 = 2; } break; case 2: arr[count2][count3] = count; count++; count2++; count4++; if(count4 == count5){ count4 = 0; count1 = 3;} break; case 3: arr[count2][count3] = count; count++; count3--; count4++; if(count4 == count5){ count4 = 0; count1 = 4;} break; case 4: arr[count2][count3] = count; count++; count2--; count4++; if(count4 == count5){ count4 = 0; count5-=2; count2++; count3++; count1 = 1;} break; } } for(int i = 0;i运行结果:(java实现,可自由输入)
4
输入数字是4
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
Process finished with exit code 0
3.递归法3.1解题思想:
一个过程或者函数在定义中直接或者间接调用自己的方法
3.2举例:
汉诺塔
求阶乘
``````````
3.3代码举例:
题目:计算阶乘
package arrar; import java.util.Scanner; public class text22 { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); System.out.println("请输入你需要计算的阶乘"); int num = scanner.nextInt(); System.out.println(answer(num)); } public static int answer(int num){ if(num == 0){ return 1; } else { return num*answer(num-1); } } }运行结果:(java实现,可自由输入)
请输入你需要计算的阶乘
4
24
Process finished with exit code 0
4.枚举法4.1解题思路:
将所有情况全部列举出来
4.2举例:
字符串匹配问题
最小公倍数问题
4.3代码举例:
问题:输入三个数,求最小公倍数
package arrar; import java.util.Scanner; public class text22 { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); System.out.println("请输入三个你需要计算的阶乘"); int num = scanner.nextInt(); int num1 = scanner.nextInt(); int num2 = scanner.nextInt(); System.out.println(answer(num,num1,num2)); } public static int answer(int num,int num1,int num2){ int maxnum = 0; if (num>num1){ maxnum = num; } else{ maxnum = num1; } if (maxnum运行结果:(java实现,可自由输入)
请输入三个你需要计算的阶乘
2 3 5
30Process finished with exit code 0
5.分治法5.1解题思路:
把一个问题分成两个或者多个相似的子问题
5.2举例:
二叉树遍历
折半查找
6.模拟法6.1解题思路:
通过对一件事的过程进行先后顺序的模拟
7.贪心法7.1解题思路:
逐步获得最优解
7.2举例
哈夫曼树
构造最小生成树
8.回溯法8.1解题思路:
可理解为从二叉树根节点出发找答案,中途(走不通就掉头)
9.构造法9.1解题思路:
通过构造数学模型解决问题
10.动态规划法10.1解题思路:
用于解决多阶段决策问题
10.2举例
青蛙跳出井需要的步骤(一步或者两步)
补充说明,内容未补充完全,后期补充
同时解题时有多种解法,具体解法看题目选择
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)