`
人生难得糊涂
  • 浏览: 114675 次
社区版块
存档分类
最新评论
文章列表
题意: 给出若干个联系人,及每个联系人通知其他联系人所需的时间,求从哪个联系人开始通知所用时间最短,并求出最短时间。 很明显是图论中求最短路径问题,可以用floyd 算法或者Dijkstra算法。我这里分别用两种方法实现。 方法一:Dijkstra算法。 只要遍历每个人,对每个人都以他为起点调用Dijkstra算法,求出最长时间(注意这道题一个联系人可以同时通知多个联系 人,所以求出他通知他人的最大时间,则是他通知所以人所用时间)。然后在每个人的“最长时间中”求出最短的那个。即答案。 #include "iostream" using namespace st ...
package date0524_data流; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; public class Projict { public static void main(String[] args) { ...
思路:这是我做的第二道二维数组的动态规划,所以很清楚的知道二维的动态规划递归方程是用dp[][]而不是dp[],所为很容易得到递归公式:dp[i][j]=max(dp[i-1][j],dp[i+1][j],dp[i][j-1],dp[i][j+1]).(在满足条件的情况下),那么我们用个递归函数,里面分别判断(i-1,j)(i+1,j)(i,j-1)(i,j+1)等四个方向是否满足条件(不越界,并且值小于位置(i,j)上的值).然后在主函数中依次遍历每个点,每个点调用递归函数得到以这个点为起点可以得到的最大路径,然后我们从每个点的最大路径中再选最大的一个,其值+1即为answer。 但是这样 ...
1. 【ALT+/】 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。 2. 【Ctrl+O】 显示类中方法和属性的大纲 ...
这道题思路还是很简单的:因为要求至少要用多少时间,那么就要求出哪个子走廊要用到的次数最多,重叠次数最多的即所求答案,于是用一个计数器数组flag[]记录经过过房间的次数,最后flag中的最大值既结果。 但是需要注意的有两点, 1.如果开始的房间数是偶数,则要将区间起点-1,如果结束的房间号是奇数,则要将区间终点+1. 2.不一定是从小房间号搬到大房间号,也可能从大房间号搬到小房间号,所以在输入搬桌子的起点终点后,要把小的房间号存在扫描区间起点start中,把大的房间号存在end中。(因为没考虑到这点,贡献了一次wa,又因为交换函数写错地方了,要贡献了一次wa,伤心。。) 代码如下 # ...
题目大意: 求一共序列的两个字段最大和。 例如 1 -1 2 2 3 -3 4 -4 5 -5 In the sample, we choose {2,2,3,-3,4} and {5}, then we can get the answer. 答案是 13     分析: 在做这道题之前,我们先看看求一序列的最大子段是怎样求的。 设a[i]为 ...

POJ2506-分治法

  与之解法相同的题 POJ1953,http://124654439.iteye.com/admin/blogs/2071845 题目大意: 有一个2*n大小的矩形地板,用2*2和2*1大小的瓷砖方块来填满它。 求一共有多少种放法。 分析: 如图,我们假设先放第一块方块,那么有以下两种放法设n长度的瓷砖有f(n)块放法,对于图中上面这种放法,f(n)=f(n-2) 显然中间的也是f(n)=f(n-2) 而下面的则是f(n)=f(n-1) 所以可以得到一个递归公式f(n)=f(n-1)+2*f(n-2).有了递推公式,很容易得到程序,但需要注意的是这道题的输出结果超出基本 ...
   与这道题极其相似的一道题,POJ2506http://124654439.iteye.com/admin/blogs/2071852 题目大意: 给一个n位的二进制数,求它有多少种不包含连续的一的排列,例如 n = 3时,有5种排列 ( 000, 001, 010, 100, 101)(011, 110, 111 中有连续的1所以不满足).。 分析: 我们先填n位二进制数的第一位,第一位有两种情况,1或0,当第一位为0时,这个n位数的排列数与其后的n-1位排列数相同,当第一位为1时,第二位一定为0(因为不能有连续的1),所以这个n位数的排列,与其后n-2 位数排列相同 所 ...
在JAVA中,一个可以读取文件的对象叫做输入流,一个可以写入文件的对象叫输出流。在JAVA中可以字节的形式直接输入输出文件,与之相关的是抽象类InputStream,和OutputStream 下面将介绍上这两个抽象类的常用实现子类 文件输入 ...
在硬盘中文件都是以字节形式存储的,在JAVA中用File对象表示文件,我们可以用File(String pathname)构造方法构建一个文件对象,pathname代表文件的地址,既可以是绝对地址,也可以是相对地址(需要注意的是new File("\\abc.txt")代表的是C盘下的abc.txt 而File("abc.txt")则表示JAVA工作空间下的abc.txt文件)。下面介绍几个我自己原来不熟悉的方法吧。 file.getPath();得到文件的相对路径 file.getAbsolutePath();得到文件的绝对路径 file.mk ...
在我第一个画图版本中,我将所有组件的布局方式设置为 NULL布局 ,然后通过屏幕相对坐标来设置组件位置和大小,而这样布局有一个问题就是当 窗口大小改变时,组件的位置和大小不会相应改变,而对于画图板这个项目来说,不能改变窗口大小无疑是不合理的。所以我重写了画图板,改变了起布局方式。   大体布局介绍如下   窗口布局为 BorderLayout布局 在其西边是坐标工具栏,中间是右边面板,绘图面板在右边面板上,南边是个底部面板, 而在用 BorderLayout布局需要注意的是,在设置组件的setPreferredSize 时候在WEST 和EAST方向的组件的height是不起作用的, ...
用JAVA做仿XP画图板 ,前前后后可以算是做了三次,现在做了个半成品产品出来,现在贴出第一个版本的核心代码  也把开发过程中遇到的问题写下了  画图板还会继续做 到时候会更新内容 欢迎交流 欢迎拍砖 在开发画图板的过程中 ,遇到的最大问题就是如何把绘画的各种不同图形 保存下来 在我的第一个画图板版本中 我是用一个定义了一个图形类 Drawing  他有若干个子类(直线 矩形 椭圆等等), 然后我定义了一个Drawing[] 数组,itemList 。 每次在鼠标释放时添加一个Drawing对象到itemlist数组中,在paint方法中 对itemlist数组遍历 绘画存在其中的所有 ...
直接对一个JFrame进行repaint的话,会出现屏幕闪烁或者不能显示屏幕的问题 如下代码 import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class S2P11 extends JFrame { /** * */ private static final long serialVersionUID = 1L; final int WIDTH = 900, HEI ...
  Description 大于1的正整数n可以分解为:n=x1*x2*…*xm。 例如,当n=12 时,共有8 种不同的分解式: 12=12; 12=6*2; 12=4*3; 12=3*4; 12=3*2*2; 12=2*6; 12=2*3*2; 12=2*2*3。 对于给定的正整数n,计算n共有多少种不同的分解式。 Input 输入数据只有一行,有1个正整数n (1≤n≤2000000000)。 Output 将计算出的不同的分解式数输出。 Sample Input 12 Sample Output 8   思路: i=2遍历到n-1  如果能被n整除这 ...

半数集问题

问题描述 在n的左边加上一个自然数 该自然数步能超过最近添加的数的一半 例如set(6)={6,16,26,126,36,136} 输出给的的正整数n的半数集一共有多少个元素 input 6 output 6 /*********************************************************************************/ 分析: 用递推的思想 假如已经填好了所求半数集元素中的一位x(例如6)从1 到x/2遍历,求的其前一位p(如2),然后对p再进行从1到p/2遍历 求得其前一位(1) #include<ios ...
Global site tag (gtag.js) - Google Analytics