上一页 1 ··· 23 24 25 26 27
摘要: 题目挺简单的,可是就是一直WA,死活查不出来,上网找别人的代码比对,发现思路也没有错误,不得已跟别人的代码逐行比对,最后发现问题在于两处错误,一是比较函数中写错,如果a b 为实数,则return a - b是不对的,因为如果两数之差为小数,可能就舍成整数了,会出问题的,应该用a > b。还有一个问题是求绝对值函数,对于浮点数,应该使用fabs而不是abs 阅读全文
posted @ 2011-07-27 11:31 moonbay 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 这题就是推递推关系,推了我两个小时,推出来以后觉得还是挺简单的。用一个二维数组存放结果,f(i, j)表示结果。除了当i = j时,f(i, i) = (i - 1) * [f(i - 1, i - 1) + f( i - 2, i - 2)]和j = 2时f(i,2) = f(i-1,2)+ i-1;之外,f(i, j)= f(i-1,j) + f(i-1,j -1)*(j - 1) + f(i - 1, j - 2) * (i - j + 1);原理很简单,就是在一般情况下,f(i, j)只会由f(i - 1, j)、f(i - 1, j - 1)、f(i-1, j-2)三项组成,因为当最 阅读全文
posted @ 2011-07-25 21:54 moonbay 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 这道题可以认为是一道纯数学题,我居然半天没推出公式,最后参考了一下别人的解题报告才想清楚,汗颜啊~~N张票的所有排列可能自然是Ann = N!种排列方式现在的问题就是N张票的错排方式有几种。首先我们考虑,如果前面N-1个人拿的都不是自己的票,即前N-1个人满足错排,现在又来了一个人,他手里拿的是自己的票。只要他把自己的票与其他N-1个人中的任意一个交换,就可以满足N个人的错排。这时有N-1种方法。 另外,我们考虑,如果前N-1个人不满足错排,而第N个人把自己的票与其中一个人交换后恰好满足错排。这种情况发生在原先N-1人中,N-2个人满足错排,有且仅有一个人拿的是自己的票,而第N个人恰好与他做了 阅读全文
posted @ 2011-07-25 16:55 moonbay 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 这题跟北大1915题很像,怀疑是从北大抄过来的……#include <cstdio>#include <cstring>#include <queue>using namespace std;#define MAXL 20typedef struct { int x; int y; int step;} MyPoint;MyPoint start;int endx, endy, L = 8;bool visited[MAXL][MAXL];int move[8][2] = { { 2, 1 }, { 2, -1 }, { -2, 1 }, { -2, -1 阅读全文
posted @ 2011-07-23 20:12 moonbay 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 题意为有N个城市,每个城市用一个矩阵表示,如果三个矩阵A、B、C满足A*B=C,则A到C有一条长度为1的路径,问两个城市间的最短路。这题的最短路部分很简单,稍微麻烦的是矩阵处理。想了一下,觉得优化的矩阵运算不好打,就直接打了个最简单的,AC了,可见杭电OJ的测试数据还是很弱的。这题也WA了一次,原因是以为A*B=B,则A到B也有一条路径,测试表明测试数据中这种情况认为A到B是没有路径的。/* * hdu2807/win.c * Created on: 2011-7-23 * Author : ben */#include <stdio.h>#define SIZE 100#defi 阅读全文
posted @ 2011-07-23 16:00 moonbay 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 一看这题就很简单,可以打完了死活交不过,开始怀疑测试数据的问题,上网找别人AC的代码一看,原来就是输入建图的时候不同,恍然大悟,原来两个顶点间有可能是有多条边的,汗~~~~ 阅读全文
posted @ 2011-07-20 18:35 moonbay 阅读(109) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#define SIZE 100int map[SIZE][SIZE];int MAX = 0x7fffffff;int N, M, i, j, k, c;int S[SIZE];int D[SIZE];int dijistra() { for (i = 0; i < N; i++) { S[i] = 0; D[i] = map[0][i]; } S[0] = 1; D[0] = 0; int min; for (i = 1; i < N; i++) { min = MAX; int k = 0; for (j = 0; j < 阅读全文
posted @ 2011-07-19 14:24 moonbay 阅读(203) 评论(0) 推荐(1) 编辑
摘要: #include <stdio.h>#include <string.h>#include <math.h>#define MAX_DAY 200#define MAX_STATUS 65536#define MAX 0x7ffffffchar course[20][105];int deadline[20], needtime[20];int dp[MAX_STATUS], curday[MAX_STATUS], last[MAX_STATUS];void pretreat(int maxstatus, int N) { int i, j, yw; mem 阅读全文
posted @ 2011-07-19 14:20 moonbay 阅读(226) 评论(0) 推荐(1) 编辑
摘要: 题目意思是给定数量的1,2,5面值的硬币,问不能够成的最小面值。这题应该有多种解法,动态规划,母函数应该都行。不过最简单的方法还是发现了其中的规律以后,其实一般情况下结果应该都是a + 2 * b + 5 * c + 1,特殊情况加以判断即可,情况也不多,几行代码搞定。#include <stdio.h>int main() { int a, b, c, x;/* freopen("data.in", "r", stdin);*/ while (scanf("%d%d%d", &a, &b, &c) 阅读全文
posted @ 2011-07-18 14:37 moonbay 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 这题初一看以为是动态规划,打了一段时间以后猛然想到,其实只要复习一门难度最小的课,所得的效率就会是最高的。原理就是,如果a+b = c,则a^2+b^2<c^2. 阅读全文
posted @ 2011-07-16 16:28 moonbay 阅读(156) 评论(0) 推荐(1) 编辑
上一页 1 ··· 23 24 25 26 27