- 浏览: 117340 次
最新评论
-
witcheryne:
apache commons http client 很重.推 ...
HTTPClient模块的HttpGet和HttpPost -
jun4997:
JAVA如何自己写方法读取BMP文件 -
肆无忌惮_:
人生难得糊涂 写道肆无忌惮_ 写道注释好少啊,看不懂 写了个五 ...
人工智能原来如此简单——你所见过的最好的五子棋 -
人生难得糊涂:
肆无忌惮_ 写道注释好少啊,看不懂 写了个五子棋人机算法的PP ...
人工智能原来如此简单——你所见过的最好的五子棋 -
肆无忌惮_:
注释好少啊,看不懂
人工智能原来如此简单——你所见过的最好的五子棋
文章列表
题意:
给出若干个联系人,及每个联系人通知其他联系人所需的时间,求从哪个联系人开始通知所用时间最短,并求出最短时间。
很明显是图论中求最短路径问题,可以用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) {
...
POJ1088,二维动态规划
- 博客分类:
- 动态规划
思路:这是我做的第二道二维数组的动态规划,所以很清楚的知道二维的动态规划递归方程是用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,伤心。。)
代码如下
# ...
POJ2479——动态规划求最大子段
- 博客分类:
- 动态规划
题目大意:
求一共序列的两个字段最大和。
例如
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).有了递推公式,很容易得到程序,但需要注意的是这道题的输出结果超出基本 ...
POJ1953,斐波拉契数列
- 博客分类:
- 递归
与这道题极其相似的一道题,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 ...