hdu1233

摘要: 题解: Prim算法。因为该图为完全图,用邻接矩阵存储。注意所开数组的大小及判断条件。代码如下:#include <stdio.h>#define MaxVex 110int MGraph[MaxVex][MaxVex];typedef struct Closedge{ int adjvex; int lowcost;}closedge[MaxVex];int minimum(closedge &ce, int n){ int i = 1, k, min; while (!ce[i].lowcost)//辅助数组中第1个非零数 i++; min =... 阅读全文
posted @ 2013-02-07 13:39 zm001 阅读(222) 评论(0) 推荐(1) 编辑

hdu 1858

摘要: 题解: 该题与hdu1003一模一样。代码如下:#include <stdio.h>int main(){ int n, m, i, stone, L, R, bL; __int64 sum, bsum; scanf("%d", &n); while (n--) { scanf("%d", &m); sum = -4444; //initialization sum bsum = 0; //sum in buffer bL = 1; //L of the buffer sum fo... 阅读全文
posted @ 2013-01-27 11:28 zm001 阅读(111) 评论(0) 推荐(0) 编辑

hdu 2058 The Sum Problem

摘要: 题解: 数学题,等差数列的运用。Sn = (a1+an) * n / 2 = (a1 + a1 + (n - 1) * d)*n/2。解题公式变形:(a+a+len)*(len+1)/2 = m => a = m/(len+1)-len/2 (m是已知条件,len的最大值为√(2*m)代码如下:#include <stdio.h>#include <math.h>int main(){ int n, m, a, len; while (scanf("%d%d", &n, &m) && (n || m)) { le 阅读全文
posted @ 2013-01-26 14:43 zm001 阅读(405) 评论(0) 推荐(0) 编辑

hdu 2095 find your present (2)

摘要: 题解: 用到异或的知识,a^a = 0, a^0 = a. 因为题目中说道你的礼物的号码有奇数个,其它的号码有偶数个。把每个数用异或符连接起来,运算号就剩下一个本来奇数个的号码了。例如a^b^c^c^b^a^c = a^a^b^b^c^c^c = 0^0^0^c = c(a, b, c代表任意整数)代码如下:#include <stdio.h>int main(){ int n, m, present; while (scanf("%d", &n) && n) { present = 0; while (n--) { ... 阅读全文
posted @ 2013-01-25 17:48 zm001 阅读(479) 评论(0) 推荐(0) 编辑

hdu 2094 产生冠军

摘要: 题解: 题中有两群人,前面的一群人看成是冠军候选人,后面的一群人看成不可能成为冠军的人,如果冠军候选人同时出现在另一个群里,则将该冠军候选人踢出冠军候选人群。最后冠军候选人群中如果仅剩下一人,则这个人就是冠军,否则没有冠军。代码如下:#include <stdio.h>#include <string.h>typedef struct Player{ char win[20], lose[20];//最好写成20,第一次写10的时候没有通过}player;int main(){ int n, i, j, ok; char tmp[20]; player ply[100. 阅读全文
posted @ 2013-01-25 16:43 zm001 阅读(167) 评论(0) 推荐(0) 编辑

hdu 2096 小明A+B

摘要: 题解: 细节题,题目中说的A 和B 都能用int 表示,但是A+B可能超出int 的范围,还有一点不严谨的地方就是如果是100的话,应输出 00 啊,还是 0 啊。本题按输出的是0来做。代码如下:#include <stdio.h>int main(){ __int64 n, a, b; scanf("%I64d", &n); while (n--) { scanf("%I64d%I64d", &a, &b); printf("%I64d\n", (a + b) % 100); } return 0 阅读全文
posted @ 2013-01-25 15:49 zm001 阅读(201) 评论(0) 推荐(0) 编辑

hdu 2097 Sky数

摘要: 题解: 比较简单,求各个位数之和。代码如下:#include <stdio.h>int main(){ int n, tmp, sum1, sum2, sum3; while (scanf("%d", &n) && n) { sum1 = sum2 = sum3 = 0; tmp = n; while (tmp) {//十进制各个数位和 sum1 += tmp % 10; tmp /= 10; } tmp = n; while (tmp... 阅读全文
posted @ 2013-01-25 15:36 zm001 阅读(782) 评论(0) 推荐(0) 编辑

hdu 2098 分拆素数和

摘要: 题解: 该题主要是理解题意,将一个偶数拆分成两个不同素数的和。代码如下:#include <stdio.h>#include <math.h>int IsPrime(int n){ int i; for (i=2; i<=sqrt(n); i++) { if (n % i == 0) return 0; } return 1;}int main(){ int n, i, cnt; while (scanf("%d", &n) && n) { cnt = 0; for (i=3; i<... 阅读全文
posted @ 2013-01-25 14:48 zm001 阅读(1191) 评论(0) 推荐(0) 编辑

hdu 2099 整除的尾数

摘要: 题解: 主要是对尾数 00 01 02 03 .... 09 的处理。反正后两位数总共只有100个,就用的枚举的方法。代码如下 #include <stdio.h>int main(){ int a, b, first, t, i; while (scanf("%d%d", &a, &b) && (a || b)) { a *= 100; first = 1; for (i=a; i<a+100; i++) { if (i % b == 0) { ... 阅读全文
posted @ 2013-01-24 21:46 zm001 阅读(285) 评论(0) 推荐(0) 编辑

hdu 2056 Rectangles

摘要: 题解: 简单数学题,但是细节就太重要了,注意面积为零的情况,最最该注意的是题中给出的对角线上的点是主对角线或副对角线上的,我就是因为一直认为它给出的都是主对角线上的点错了好多次。基本步骤是先将给出的点转换成主对角线上的点,即用主对角线的两个点表示矩形,再确定重叠部分(假设存在)矩形的主对角线的两个点坐(x1,y1)(x2,y2)如果x2-x1<0 或 y2-y1<0,那么假设不成了,重叠部分为零(输出时应输出0.00)。代码如下:#include <stdio.h> void change(double *x1, double *y1, double *x2, doub 阅读全文
posted @ 2013-01-24 11:39 zm001 阅读(207) 评论(0) 推荐(0) 编辑