自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 资源 (1)
  • 收藏
  • 关注

原创 九十七.动态规划算法问题

题一:背包问题有n个重量和价值分别为wi,vi的物品,从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值。1≤n≤1001≤wi,vi≤1001≤W≤10000输入:n=4(w,v)={(2,3),(1,2),(3,4),(2,2)}W=5输出:7(选择第0,1,3号物品)因为对每个物品只有选和不选两种情况,所以这个问题称为01背包。解法一:dfsimport java.util.Arrays;import java.util.Scanner;

2021-04-04 19:58:27 338 1

原创 九十六.贪心策略算法问题

题一:硬币支付问题硬币问题有1元,5元,10元,50元,100元,500元的硬币各c1,c5,c10,c50,c100,c500枚.现在要用这些硬币来支付A元,最少需要多少枚硬币?假定本题至少存在一种支付方案.0≤ci≤10^90≤A≤10^9输入:第一行有六个数字,分别代表从小到大6种面值的硬币的个数第二行为A,代表需支付的A元样例:输入3 2 1 3 0 2620输出6import java.util.Scanner;public class lianXI {

2021-03-31 20:01:02 441

原创 九十五.深度优先搜索DFS(深入递归(二))

题一:数独游戏你一定听说过“数独”游戏。如图,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。数独的答案都是唯一的,所以,多个解也称为无解。本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。本题的要求就是输入数独题目,程序输出数独的唯一解。我们保证所有已知数据的格式都是合法的,并且题目有唯一的解。格式要求,输入9行,每行9个字符,0代表未知,其它数字为已知。

2021-03-27 16:48:40 202

原创 九十四.深入递归(一)

题一:走楼梯有个小孩正上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式为了防止溢出,请将结果Mod 1000000007给定一个正整数int n ,请返回一个数,代表上楼的方式数。保证n小于等于100000。解法一:import java.util.Scanner;public class lianXi { static final int mod = 1000000007; public static int solve1(int

2021-03-24 21:15:09 143

原创 九十三.字符串匹配 KMP、suffix array 、RabinKarp (字符串算法问题(二))

暴力解法:import java.util.Scanner;public class LianXi { public static int index(String s, String p){ int i = 0; int sc = i; int j = 0; while(sc < s.length()){ if(s.charAt(sc) == p.charAt(j)){ sc++; j++; if(j == p.length())

2021-03-21 09:57:54 131

原创 九十二.字符串算法问题(一)

题一:判断字符串中有无重复字符实现一个算法,确定一个字符串的所有字符是否全都不同。import java.util.Scanner;public class LianXi { public static boolean checkdifferent(String s){ int[] flag = new int[1000]; for(int i = 0; i<s.length(); i++){ int c = (int)(s.charAt(i)); if(flag[c

2021-03-16 20:19:18 214

原创 九十一.多维数组和矩阵类型算法题总结——JAVA

题一:顺时针打印二维数组1 2 3 45 6 7 89 10 11 1213 14 15 16输出:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10import java.util.Scanner;public class LianXi { public static void print(int[][] arr){ int leftUpRow = 0, leftUpCol = 0, rightDownRow = arr.

2021-03-10 20:18:58 228

原创 九十.查找与排序习题总结(三)

题一:排序数组中找出和的因子给定已排序数组arr和k,不重复打印arr中所有相加和为k的不降序二元组如输入arr = {-8,-4,-3,0,2,4,5,8,9,10}, k = 10输出(0,10)(2,8)import java.util.ArrayList;import java.util.Scanner;public class LianXi { public static void partition2(int[]arr, int p, int r, int k){

2021-02-27 16:49:39 216

原创 八十九.计数排序、基数排序(查找与排序(四))——JAVA

计数排序一句话:用辅助数组对数组中出现的数字计数,元素转下标,下标转元素步骤:1、找出原数组中元素值最大的,记为max。2、创建一个新数组helper其长度是max加1,其元素默认值都为0。3、遍历原数组中的元素,以原数组中的元素作为helper数组的索引,以原数组中的元素出现次数作为helper数组的元素值。4、创建结果数组result,起始索引index。5、 遍历helper数组,找出其中元素值大于0的元素,将其对应的索引作为元素值填充到result数组中去,每处理一次,count中的

2021-02-21 16:29:08 158

原创 八十八.二叉树遍历、堆排序(查找与排序(三))——JAVA

二叉树的遍历import java.util.Scanner;public class LianXi { //前序遍历 public static void preOrder(int []arr, int i){ if(i >= arr.length) return; System.out.print(arr[i] + " "); //输出根节点 preOrder(arr, 2 * i + 1); //递归输出左子树 preOrder(arr, 2

2021-02-15 18:14:19 161

原创 八十七.查找与排序习题总结(二)

题一:调整数组顺序,奇数在左,偶数在右调整数组的顺序使奇数位于偶数前面:输入一个整数数组,调整数组中数字的顺序使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。(用快速排序思想)import java.util.Scanner;public class LianXi { public static void quickSort(int []A, int p, int r){ if(p<r){ int q = partition2(A, p,

2021-02-07 20:03:04 210

原创 八十六.快速排序与归并排序(查找与排序(二))——JAVA

分治法分治法:将原问题划分成若干个规模较小而结构与原问题一致的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。容易确定运行时间,是分支算法的优点之一。分治模式在每一层递归上都有三个步骤:1、分解:将原问题分解成一系列子问题;2、解决:递归地解决各子问题。若子问题足够小,则直接有解;3、合并:将子问题的结果合并成原问题的解。分治法的关键点:原问题可以一直分解为形式相同子问题,当子问题规模叫小叔,可自然求解,如一个元素本身有序子问题的解通过合并可以得到原问题的解子问题

2021-02-03 15:23:39 250

原创 八十五.递归、查找与排序习题总结(一)

一、小白上楼梯(递归设计)小白正在上楼梯,楼梯有n阶台阶,小白一次可以上一阶,2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方式?import java.util.Scanner;public class LianXi { public static int f(int n){ if(n==0) return 1; if(n==1) return 1; if(n==2) return 2; return f(n-1) + f(n-2) + f(n-3);

2021-01-31 14:35:45 170

原创 八十四.递归求解算法问题总结(查找与排序(一))——JAVA

递归递归设计经验:找重复(子问题)1.找到一种划分方法2.找到递推公式或者等价转换都是父问题转化为求解子问题找重复中的变化量→参数找参数变化趋势→设计出口根据参数变化的趋势,对边界进行控制,适时终止递归一.切蛋糕思维:例题1:求n的阶乘import java.util.Scanner;public class LianXi { public static int f(int n){ if(n==1) return 1; return n * f(n-1); }

2021-01-28 16:13:16 415 2

原创 八十三.0~1间的浮点实数的二进制表示 (位运算)

给定一个介于0和1之间的实数,(如0.625),类型为double,打印它的二进制表示(0.101);如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。import java.util.Scanner;public class LianXi { public static void main(String[] args){ Scanner in = new Scanner(System.in); double num = in.nextDouble(); //创建一个初

2021-01-21 15:13:20 173

原创 八十二.将整数的奇偶位互换(位运算)

将整数的奇偶位互换import java.util.Scanner;public class LianXi { public static int exchange(int i){ //和10101010……做与运算取出偶数位 int ou = i&0xaaaaaaaa; //和01010101……做与运算取出奇数位 int ji = i&0x55555555; //偶数位和奇数位异或连起来返回的值为交换后的值 return ((ou>>1)

2021-01-21 14:34:19 152

原创 八十一.判断一个整数是不是2的整数次方(位运算)

用一条语句判断一个整数是不是2的整数次方import java.util.Scanner;public class LianXi { public static void main(String[] args){ Scanner in = new Scanner(System.in); int N = in.nextInt(); Integer.toString(N,2); if(((N-1)&N) == 0){ System.out.println(N + "是

2021-01-21 14:04:14 100

原创 八十.找出二进制中1的个数(位运算)

请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。方法一 :挪动1(向左挪)import java.util.Scanner;public class LianXi { public static void main(String[] args){ Scanner in = new Scanner(System.in); int N = in.nextInt(); //二进制转化 System.out.println(Integer.toString(N,

2021-01-20 17:26:47 201

原创 七十九.找出唯一成对的数(位运算)

1——N,这N个数放在含有N+1个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法将它找出来;不用辅助存储空间,能否设计一个算法实现?import java.util.Random;public class LianXi { //交换函数 public static void swap(int[] a, int index, int i) { int temp = index; index = i; i=temp; }

2021-01-20 16:17:01 127 1

原创 七十八.ags4 -1.1.24

给出使用欧几里得算法105和24的最大公约数的过程中得到的一系列p和q的值。扩展该算法中的代码得到一个程序Euclid,从命令行接受两个参数,计算它们的最大公约数并打印出每次调用递归方法时的两个参数。使用你的程序计算1111111 和 1234567 的最大公约数。public class LianXi { public static int gcd(int p, int q){ System.out.println("p = " + p + " "+"q = " + q);

2021-01-18 20:23:45 147

原创 七十七.ags4-1.1.15

编写一个静态方法 histogram(),接收一个整形数组a[],和一个整数M为参数,并返回一个大小为M的数组.其中第i个元素的值为整数i在参数数组中出现的次数,如果a[] 中的值均在 0 - M-1之间 ,返回的数组中所有元素之和应该和a.length相等public static int[] histogram(int[] a, int M){ int [] b = new int [M]; int m = 0; int n = 0; //遍历新的的数组,再遍历接受的数组,比较i在接受

2021-01-18 17:17:53 114

原创 七十六.矩阵转置——JAVA

编写一段代码,打印出M行N列的二维数组的转置(交换行和列)import java.util.Scanner;public class LianXi { public static void main(String[] args){ Scanner in = new Scanner(System.in); int m = in.nextInt(); int n = in.nextInt(); int [][] a = new int

2021-01-18 16:40:55 166

原创 七十五.二分查找的递归实现 —— JAVA

编写递归代码是最重要的有以下三点。①递归总有一个最简单的情况——方法的第一条语句总是一个包含 return的条件语句。②递归调用总是尝试解决一个规模更小的子问题,这样递归才能收敛到最简单的情况。③递归调用的父问题和尝试解决的子问题之间不应该有交集。public class LianXi { public static int rank(int key, int[]a){ return rank(key, a, 0, a.length-1); } public static int r

2021-01-12 16:45:40 121

原创 七十四.JAVA典型静态方法的实现

public class LianXi { //计算一个整数的绝对值 public static int abs(int x){ if(x<0) return -x; else return x; } //计算一个浮点数的绝对值 public static double abs(double x){ if(x < 0.0) return -x; else return x; } //判定一个数是否为素数 public

2021-01-12 16:03:07 103

原创 七十三.JAVA典型的数组处理

public class LianXi { public static void main(String[] args){ //声明数组 int a[]; //创建数组 a = new int[10]; //初始化数组 for(int i = 0; i < 10; i++){ a[i] = 0; } //数组赋值 for(int j = 0; j < 10; j++){ a[j] = j; } int N = a.length;

2021-01-12 15:27:39 108

原创 七十二.模拟ATM机

ATM.javaimport java.util.Scanner;public class ATM { private BankDatabase bankDatabase; public ATM(){ bankDatabase = new BankDatabase(); } public void Screen(){ while (true) { System.out.println("Welcome!");

2020-12-25 21:33:56 315 2

原创 七十一.ALGO-2.最大最小公倍数

#include<iostream>using namespace std;int main(){ long long n; cin >> n; long long ans; if(n <= 2) { ans = n; } else if(n % 2 == 1) { ans = n * (n-1) * (n-2); } else if(n % 3 == 0) { ans ..

2020-10-06 20:19:23 147 5

原创 七十.ALGO-1区间k大数查询

#include<iostream>#include<algorithm>#include<vector>using namespace std;int cmp(int a,int b){ return a>b;}int main(){ int n,m; cin >> n; vector<int>a(n); for(int i=0; i<n; i++) { cin >> a[i]; }..

2020-10-06 19:59:55 113

原创 六十九.堆排序C语言实现

一、最小堆#include<stdio.h>int h[101]; //用来存放堆的数组 int n; //用来存储堆中的元素的个数,也就是堆的大小 //交换函数 ,用来交换堆中的两个元素的值 void swap(int x,int y) { int t; t = h[x]; h[x] = h[y]; h[y] = t;}void siftdown(int i)

2020-10-05 19:57:39 129

原创 六十八.Floyd-Warshall C语言实现

#include<stdio.h>int main(){ int e[10][10],k,i,j,n,m,t1,t2,t3; int inf = 99999999; //正无穷值 scanf("%d %d",&n,&m); //读入顶点数和边的条数 for(i=1;i<=n;i++) //初始化 for(j=1;j<=n;j++) if(i==j)

2020-10-03 20:36:19 193

原创 六十七.深度优先遍历C语言实现(有向图)

#include<stdio.h>int min = 9999999,book[101],n,e[101][101]; //假设9999999为正无穷 void dfs(int cur,int dis) //cur是当前所在的顶点编号,dis是当前已经走过的路程 { int j; if(dis>min) //如果当前走过的路程已经大于之前的最短路,则没必要继续尝试了,立即返回 return ; if(cu

2020-10-03 19:12:43 1572

原创 六十六.广度优先搜索C语言实现(无向图)

#include<stdio.h>int main(){ int i,j,n,m,a,b,cur,book[101]= {0},e[101][101]; int que[10001],head,tail; scanf("%d %d",&n,&m); //初始化二维矩阵 for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(i==j) e[i][j] = 0

2020-10-03 10:29:34 438

原创 六十五.深度优先搜索C语言实现(无向图)

#include<stdio.h>int book[101],sum,n,e[101][101];void dfs(int cur) //cur是当前所在顶点的编号 { int i; printf("%d",cur); sum++; //每访问一个顶点,sum就加1 if(sum==n) return; //所有的顶点都已经访问过则直接退出 for(i=1;i<=n;i++) //从1号顶点到n号顶点一次尝试,看哪

2020-10-03 10:03:01 530

原创 六十四.十进制与十六进制的互相转换

十进制转十六进制#include<iostream>using namespace std;int main(){ int a; cin >> a; int i = 0; char b[100]; if(a==0) { cout << "0"; } else { while(a!=0) { if(a % 16 >= 10) { b[i++] = a % 16 + 'A

2020-09-24 21:45:50 614

原创 六十三.BASIC-9.特殊回文数

#include<iostream>using namespace std;int main(){ int n; cin >> n; for(int i = 1; i<10; i++) { for(int j = 0; j<10; j++) { for(int k = 0; k<10; k++) { if((i+j+k+j+i)==n) { cout << i << j <&.

2020-09-24 20:51:51 82

原创 六十二.L1-048 矩阵A乘以B

#include<iostream>using namespace std;int a[100][100],b[100][100],ans[100][100];int ra,ca,rb,cb;int f(int r,int c){ int sum = 0; for(int i = 1; i <= ca; i++) { sum += a[r][i] * b[i][c]; } return sum;}int main()..

2020-09-23 20:13:41 180

原创 六十一.L1-044 稳赢

#include <iostream>#include <map>using namespace std;int main(){ map<string,string>m; m["Bu"] = "JianDao"; m["JianDao"] = "ChuiZi"; m["ChuiZi"] = "Bu"; int n , cnt = 0; string s; cin >> n; whil..

2020-09-23 19:11:32 136

原创 六十.L1-035 情人节

#include<iostream>using namespace std;int main(){ string a,b,t; int cnt = 0; while(cin >> t) { if(t == ".") { break; } cnt++; if(cnt == 2) { a = t; ...

2020-09-22 21:00:17 104

原创 五十九.L1-033 出生年

#include<iostream>#include<cstdio>#include<set>using namespace std;int main(){ int year,n; scanf("%d%d",&year,&n); for(int i = year;i < 10000;i++) { set<int>s; int num = i; f..

2020-09-22 20:17:11 92

原创 五十八.L1-030 一帮一

#include<iostream>#include<vector>using namespace std;struct node{ int a; string s;};int main(){ int n; cin >> n; vector<node>stu; for(int i = 0; i<n; i++) { node temp; cin >.

2020-09-21 21:59:02 136

动漫网站播放界面(皮)+图鉴 Html+Css+Js

为学生作品,总共十五个网页,用HTML,CSS,JavaScript制作。主题为动漫网站,有动漫图鉴介绍和播放界面(皮)。已打包为ZIP格式,解压即可使用,最好使用谷歌网页打开。

2020-09-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除