- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二次单元章节考核.doc
第二次单元章节考核
要求:
(1)要求动态通过键盘在对话框或命令行输入,而后显示结果(输入输出用scanner或system.in),本次考试的输入不要采用JOptionPane的输入方式;
(2)程序检查过后点“提交”按钮,然后关机,走人!
注意:
(1)严格按照输入、输出的要求,否则一律0分,补考!!!
题目如下:
1.写出菲波拉契数列自底向上的非递归动态规划算法或自顶向下的递归动态规划算法(备忘录方法)。
输入:输入一个数字。
输出:输出为Fibonacci数列的值。
示例:输入:5 ,输出:8
Fibonacci数列可以递归地定义为:
import java.util.Scanner;
public class a {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(f(n));
}
static int fi[]=new int[1000];
static int f(int n){
int t=1;
if(fi[n]!=0)return fi[n];
if(n=1)return 1;
if(n1)return f(n-1)+f(n-2);
return fi[n]=t;
}
}2. 写出矩阵连乘的自底向上非递归的动态规划算法或自顶向下递归的动态规划算法(备忘录方法)。
输入:先输入矩阵连乘的个数n,然后依次手动输入(不能随机生成!)矩阵的维数pi(数字)。注意,6个矩阵,需输7个维数值。
输出:矩阵连乘的次序,如:((A1(A2A3))((A4A5A6))。
示例:输入:6 30 35 15 5 10 20 25,输出:((A1(A2A3))((A4A5)A6))
import java.util.Scanner;
public class b {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m[][]=new int[n+1][n+1];
int s[][]=new int[n+1][n+1];
int p[]=new int[n+1];
for (int i = 0; i n+1; i++) {
p[i]=sc.nextInt();
}
jc(p,n,m,s);
System.out.println(cx(1,n,s));
}
private static String cx(int i, int j, int[][] s) {
// TODO 自动生成的方法存根
if(i==j)return A+i;
else
return (+cx(i,s[i][j],s)+cx(s[i][j]+1,j,s)+);
}
private static void jc(int[] p, int n, int[][] m, int[][] s) {
// TODO 自动生成的方法存根
for (int i = 1; i =n; i++) {//单个矩阵,乘的次数为0;
m[i][i]=0;
}
for (int r = 2; r =n; r++) {//r为每次循环
for (int i= 1; i =n-r+1; i++) {从1到n-r+1循环取矩阵长度r时的矩阵, int j=r+i-1;
m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];//取第一个可取位置
s[i][j]=i; //断开位置为i
for (int k = i+1; k j; k++) {
//循环取K的可取位置
int t=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];
if(tm[i][j]){//比较取最低乘数次 m[i][j]=t;
s[i][j]=k;
}
}
}
}
}
}
呵呵
import java.util.*;
public class b2{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.ne
文档评论(0)