程序设计练习
文章平均质量分 50
biu piu biu piu
这个作者很懒,什么都没留下…
展开
-
完全背包 动态规划 Java
完全背包问题:给定一个背包,容量为capacity。给定一堆物品,物品的价值和重量存在数组当中,具体如下:int[] w = {2, 3, 4, 5}; //物品重量int[] v = {3, 4, 5, 6}; //物品价值int capacity = 8; //背包容量与0-1背包不同的是,对每一种物品,它可以放入无限多件。考虑到每一个物品,它都有两种决策:放或者不放;如果放的话,放多少件可以放入背包的前提是 w[i]<=capacity对于每原创 2021-09-15 21:08:27 · 324 阅读 · 1 评论 -
0-1背包问题 回溯放入的物品 Java
给定一个背包,容量capacity。现有一堆物品,每个物品 i 的重量为 w[i] ,价值为 v[i] ,给定的数据内容如下所示。int[] w = {2, 3, 4, 5}; //物品重量int[] v = {3, 4, 5, 6}; //物品价值int capacity = 8; //背包容量要解决的问题是,如何将物品放入背包,从而获得最大的价值。(0-1背包指定了,一个物品,要么放,要么不放,不能拆开)所以考虑到每一个物品,它都有两种决策:放或者不放...原创 2021-09-15 20:24:41 · 427 阅读 · 1 评论 -
微众银行笔试编程题——操作矩形 Java程序设计题
平面上有一个矩形,大小为n×m,其中,长度为n的边是竖直的,长度为m的边是水平的。将矩形切割成n×m个小正方形,规定左上角的小正方形坐标为,左下角的小正方形坐标为,右上角的小正方形坐标为,右下角的小正方形坐标为。从上往下数第x行,从左往右数第列的小正方形坐标为(x,y).现在,我们对这个矩形进行如下操作,将其顺时针旋转90度x次,然后将其水平翻转y次,然后将其逆时针旋转90度z次。接着,我们将这个操作后的矩形重新标上坐标,每一个小正方形就有一个原来的坐标和新的坐标。然后有Q个询问,每一次询问一个原创 2021-08-26 20:36:20 · 688 阅读 · 0 评论 -
矩阵顺逆时针旋转、翻转 java
顺时针旋转90°(n代表的是行数)public static int[][] shun1(int[][] matrix){ int n=matrix.length; int m=matrix[0].length; int[][] matrix2 = new int[m][n]; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ mat原创 2021-08-26 20:27:53 · 1570 阅读 · 0 评论 -
任务分配问题:公共调度,单独执行 贪心 C++
问题描述:一个公司下面有n个部门,现在要给每个部门分配任务,分配任务只能按照分配的顺序进行,不能同时分配两个任务,只能一个接一个的分配,但是分配完任务后,该部门可以立刻执行(不间断),分配一个任务的时间是a,执行一个任务的时间是b,你需要做的就是决定分配给每一个部门的任务的顺序,使得所有的部门完成任务的总时间最短。思路:贪心策略。因为分配时只有一个部门负责,可以想象,分配部门的工作是不间...原创 2020-04-20 21:06:00 · 845 阅读 · 0 评论 -
小孩围成圆圈报数,到指定数退出
描述:小孩围成圆圈,先指定一个数number,第一个小孩从1开始报数,报到number的小孩退出,并把这个小孩手中的数赋给number,下一个小孩从1开始继续报数,直到圈里剩下一个小孩为止。分析参考另一篇博文 https://blog.csdn.net/MISS_XDY/article/details/105235472代码如下:#include<bits/stdc++.h...原创 2020-04-07 18:39:20 · 653 阅读 · 0 评论 -
小孩围圈报3退出(C++)
描述:n个孩子围成一个圈,给每人一个编号,从第一个孩子开始报数,从1开始报数,报到3的孩子退出圈,他的下一个孩子从1开始继续报数。输出出圈顺序和最终获胜者。#include<bits/stdc++.h>using namespace std;/*101 2 3 4 5 6 7 8 9 10*/struct student{ int num; int flag;}...原创 2020-04-01 00:33:53 · 845 阅读 · 0 评论 -
骑士巡游问题/国际象棋马踏棋盘问题(C++)
刚开始一直不懂走日字是咋回事。网上查了,才知道原来是L型走。就是从当前位置(在不越界的情况下),有8个方向可以走。向上走两格,向左走一格 向上走两格,向右走一格 向右走两格,向上走一格 向右走两格,向下走一格 向下走两格,向左走一格 向下走两格,向右走一格 向左走两格,向上走一格 向左走两格,向下走一格这就跟最基本的走迷宫一样了。dfs或bfs都可以,从当前状态试下一个...原创 2020-04-01 00:06:22 · 1305 阅读 · 0 评论 -
小孩围圆圈报数游戏(C++)
描述:n个小孩围成圈,首先输入一个值给max,每个小孩手中有一个密码(通过输入赋值),n个小孩按着顺序报数,当报的数比max大,这个小孩出列,并将手中的密码给max,继续循环,直到最后一个小孩时,此小孩为获胜者。要求输出小孩的出圈顺序和最后胜利的小孩。要求写出详细代码和流程图。我觉得这个题是跟输入有关的,如果刚开始的max值比较大,那么会有不止一个小孩手中的数字比max小,这样的话,最后...原创 2020-03-31 23:30:56 · 2372 阅读 · 0 评论 -
8数码问题(C++)
思路:用数组比较有没有到达最终状态较为繁琐,还需要再创建一个临时数组。 可以将数组转化为一个9位数字,比如左图数组,转化为9位数为207584163,便于比较。使用bfs,从初始态开始搜索,如果某个中间状态可以由上一步走到,且该状态还未出现过(即在移动0时,还没有移动到过当前的位置),则放入队列,继续向下搜索。用map存中间状态。输入result为终态对应的9位数。(有些偷懒,应...原创 2020-03-31 23:17:23 · 1092 阅读 · 0 评论 -
填写运算符判断等式是否成立
描述:1?2?3?4?5?6?7?8?9=110在?处填上 +、-或者不填,构成的表达式判断是否正确,正确则输出(如果?处没有填写符号,则这几个数组成了一个新的N位数,比如1?2,可以是1+2,也可以是12)思路:貌似目前我也想不到什么好方法,只能选最笨的方法了,暴力解吧。一共8个位置,且都在固定位置,每个位置有3种符号可以填,所以一共3的8次方种组合,搜索解决。每次在这8个位置上填...原创 2020-03-30 02:35:56 · 2329 阅读 · 0 评论 -
医院选址问题 C++ 弗洛伊德
描述:n个村庄之间的交通图可以用有向网图来表示,边上的权值表示两村庄之间的道路长度,现在要从这n个村庄中选择一个村庄,建立一个医院,问应建在哪个村庄,使得所有的村庄离医院都比较近。思路:这里没有明确说明最近的具体含义,到底是所有村庄到医院的距离之和最小还是每个村庄到医院的距离都是差不多长的。这里我理解的意思是前者,即所有村庄到医院的距离之和最小。这就很简单了,用弗洛伊德算法,计算出所有点之...原创 2020-03-30 00:45:42 · 4675 阅读 · 2 评论 -
全排列 C++ 回溯法
数组a,从0下标开始,依次与自身和后面的元素交换,相当于当前位置因为交换已经固定了,接下来就去对后面元素进行全排列。之后,再回溯到当前位置元素不变。#include<stdio.h>#include<iostream>using namespace std;int a[5]={1,2,3,4,5};void swap(int a[],int m,int n)...原创 2020-03-30 00:37:19 · 2422 阅读 · 0 评论 -
商旅问题 旅行商问题 TSP(贪心解法C++)
描述:已知n个城市之间的相互距离,现在有一个推销员必须遍访这n个城市,并且每个城市只能访问一次,最后必须再回到出发城市。如何安排这些城市的访问次序,使得旅行路线的总长度最短?思路:贪心思想,从出发城市开始,每一次都找所有没有被访问过的城市中,找距离当前这个城市最近的城市进行访问。一直到最后所有城市都访问结束,再加上最后访问的那个城市到起点的距离。参考了一篇博文,说是由于该问题的可行解是所有...原创 2020-03-30 00:22:28 · 2620 阅读 · 0 评论 -
括号匹配问题(栈应用)C++
()[ ] { }三种括号进行匹配。左括号入栈,碰到右括号,就出栈一个元素,如果栈为空或者出栈的元素与该括号不匹配,则不合法,直接标记退出。#include<iostream>#include<string.h>using namespace std;int main() { string str; cin>>str; char s[100...原创 2020-03-30 00:00:36 · 1821 阅读 · 2 评论 -
进制转换 m进制转为n进制 以10进制为过渡 C++
如下代码所示,输入一个字符串,数m和n,m表示m进制,n表示要转换为n进制。有两个函数,m进制转10进制的函数to_10(),10进制转n进制的函数to_m()。#include<bits/stdc++.h>using namespace std;/*m进制数转化为十进制*/int to_10(string str,int m){ int len=str.lengt...原创 2020-03-29 23:57:03 · 543 阅读 · 0 评论 -
PTA 7-9 旅游规划(部分正确)迪杰斯特拉 C++
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编...原创 2020-03-29 23:45:22 · 556 阅读 · 1 评论 -
求矩阵的中的最大子矩阵(暴力+循环+文件读写)C++
描述:给定一个矩阵,找到一个子矩阵,使得子矩阵中所有元素之和最大。思路:暴力循环。从1*1矩阵一直到n*n矩阵,依次计算,比较得到最大值。输入输出用文件读写方式。#include<bits/stdc++.h>using namespace std;int main(){ int q[100][100]; ifstream in("in.txt"); int n; ...原创 2020-03-29 23:17:28 · 636 阅读 · 0 评论