ACM
文章平均质量分 56
Listening_music
这个作者很懒,什么都没留下…
展开
-
Dijkstra和Floyd算法
<br />Floyd算法:<br /> 如果要求所有两结点间的最短路径,则可以使用dijkstra算法n次完成,时间复杂度是<br />O(n^3),Floyd还提出过另一个算法,同样是O(n^3)的复杂度,但形式上更简单些。<br /> 要求的解是一个矩阵S[N][N],其中S[i][j]表示结点i到j的最短路径,算法很像动态<br />规划算法,甚至更简单些,不同的是这里规划的是一个矩阵,而不是简单的数组。<br /> Floyd算法过程描述如下:<br />(在整个循环结束后,S[i][j]肯原创 2010-12-17 10:33:00 · 598 阅读 · 0 评论 -
getchar、getch区别与用法
<br />先看看规范点的说法:<br /> getchar<br /> This is a standard function that gets a character from the stdin.<br /> getch<br /> This is a nonstandard function that gets a character from keyboard, does not echo to screen.<br /> getche<br /> T转载 2010-12-21 10:53:00 · 686 阅读 · 0 评论 -
NOJ1079 数塔问题
<br />#include"stdio.h"<br />#include"stdlib.h"<br />int gcd(int j,int k)<br />{<br /> if (j<k) return gcd(k,j);<br /> else if (k==0) return j;<br /> else return gcd(k,j%k);<br />}<br />main()<br />{int T,a[1000],b[1000],c[1000],d[1000],e[1000],f[1原创 2010-12-21 10:42:00 · 600 阅读 · 0 评论 -
NOJ1021 背包问题
<br />DP中的经典~<br />#include<stdio.h><br />#include<stdlib.h><br />int w[110],p[110],c[110][1010]; ;<br />int knapsack(int m,int n)<br />{ <br /> int i,j;<br /> for(i=1;i<n+1;i++)<br /> for(j=1;j<m+1;j++)<br /> {<br /> if(w[i]<=j) <br /> { <br /> i原创 2010-12-21 10:43:00 · 580 阅读 · 0 评论 -
NOJ1015 和GG一起回家
<br />#include<stdio.h><br />int D[100],P[100],S[100];<br />int N;<br />int DIJKSTRA(C,v)<br />int C[][100];<br />int v;<br />{<br /> int i,j,k,v1,pre;<br /> int min,max=10000,inf=10001;<br /> v1=v-1;<br /> for(i=0;i<N;i++)<br /> {D[i]=C[v1][i];<br /> if原创 2010-12-21 10:44:00 · 583 阅读 · 0 评论 -
NOJ1005 打导弹(广搜、队列)
<br />这个代码里面用的是标准队列的基本运算,所以前面定义对的基本运算的代码比较长,其实真正核心算法还是比较简单的。大家如果不想让代码显的这么长的话,可以用数组实现队列的基本运算,那这个代码就短多了哟~只是我只要在代码库里面把队列运算代码拷过来就行,那是用起来就很方便了的~<br />#include<stdio.h><br />#include<stdlib.h><br />typedef struct<br />{int data;<br /> int pos;<br /> int num;<br原创 2010-12-21 10:45:00 · 739 阅读 · 0 评论 -
易懂的动归DP详解
<br />今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下~~~<br />(说明一下,本人非常痛恨教材公式定理漫天飞,实际的讲解却讲得非常枯涩难懂,这种中国式的教育已经延绵了几千年了,现在中国的教材还是这个样子,讲清楚些明白些就那么难么?高中有个老师讲的一句话一直觉得很有道理:“教得会天才不是真本事,能把博士生的东西讲到小学生都会用那才是真水平。”)<br />附上原文地址:<br />http://www.cnblogs.com/sdj转载 2010-12-21 10:47:00 · 1049 阅读 · 0 评论 -
关于qsort中的cmp函数(网上摘录)
<br />int cmp(const void *a, const void *b)<br />返回正数就是说 cmp 传入参数第一个要放在第二个后面, 负数就是传入参数第一个要放第二个前面, 如果是 0, 那就无所谓谁前谁后..<br />下面就把snoopy曾经写的介绍qsort的完整版贴出来好了,我想有与我一样经历的朋友也可以弄懂的:<br />很多人问这个东西.我以前也看了好久,今天翻到以前学快排的时候写的练习code,基本上<br />能覆盖绝大部分用法了.<br />里面有很多地方没判断相等的转载 2010-12-21 10:51:00 · 1050 阅读 · 0 评论 -
快排函数qsort和cmp
<br />int cmp(const void *a, const void *b)<br />返回正数就是说 cmp 传入参数第一个要放在第二个后面, 负数就是传入参数第一个要放第二个前面, 如果是 0, 那就无所谓谁前谁后..<br />下面就把snoopy曾经写的介绍qsort的完整版贴出来好了,我想有与我一样经历的朋友也可以弄懂的:<br />很多人问这个东西.我以前也看了好久,今天翻到以前学快排的时候写的练习code,基本上<br />能覆盖绝大部分用法了.<br />里面有很多地方没判断相等的转载 2010-12-21 10:52:00 · 991 阅读 · 0 评论 -
C语言中字符串处理函数拾锦
<br /> 1、 比较字符串大小函数 <br /> 1) 忽略大小写---strcasecmp<br />函数原型: int strcasecmp (const char *s1, const char *s2);<br />函数说明: 用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异<br />2)忽略大小写—stricmp<br />函数原型:int stricmp(char *str1, char *str2);<br />函数说明:以大小写不敏转载 2011-04-22 19:04:00 · 1520 阅读 · 0 评论 -
C++中引用和指针的区别
下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义:引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用。见下图,所示引用的含义:2、指针和引用的区别转载 2011-10-31 15:26:27 · 97118 阅读 · 22 评论 -
0-1背包问题详解
<br />动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。<br />比如01背包问题。<br />/* 一个旅行者有一个最多能用M公斤的背包,现在有N件物品,<br />它们的重量分别是W1,W2,...,Wn,<br />它们的价值分别为P1,P2,...,Pn.<br />若每种物品只有一件求旅行者能获得最大总价值。<br />输入格式:<br />M,N<br />W1,P1<br />W2,P2<br />......<br />输出格式: <原创 2010-12-21 10:50:00 · 696 阅读 · 0 评论 -
易懂的DP详解
<br />今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下~~~<br />(说明一下,本人非常痛恨教材公式定理漫天飞,实际的讲解却讲得非常枯涩难懂,这种中国式的教育已经延绵了几千年了,现在中国的教材还是这个样子,讲清楚些明白些就那么难么?高中有个老师讲的一句话一直觉得很有道理:“教得会天才不是真本事,能把博士生的东西讲到小学生都会用那才是真水平。”)<br />附上原文地址:<br />http://www.cnblogs.com/sdj转载 2010-12-21 10:49:00 · 1071 阅读 · 1 评论 -
HDU N皇后——高效方法详解(bit方法)
<br />N皇后的问题是回溯中一个非常非常经典的例子,但是一般大家都是按普通方法去回溯搜索,在14皇后或更大的皇后数时,那种方法耗时太大。这边向大家提供一个高效的算法,通过位运算来实现N皇后~<br />// 试探-回溯算法,递归实现<br />//sum用来记录皇后放置成功的不同布局数;upperlim用来标记所有列都已经放置好了皇后。<br />#include<stdio.h><br />#include<stdlib.h><br />long sum = 0, upperlim = 1;原创 2010-12-21 10:47:00 · 903 阅读 · 0 评论 -
POJ2236 Wireless Network(并查集)
<br />这个题并不难,就是并查集的运用,下面的程序是正确的~<br />但是里面的红色代码部分应该可以用break来进行优化剪枝的,这样运行时间会短一些,但是不知为什么如果加上break运行结果就不对了的,如果有哪位高手知道了的话请告诉我一下哟~先谢谢喽O(∩_∩)O~<br />#include<iostream><br />using namespace std;<br />const int Max = 1005;<br />struct data<br />{<br /> int x, y原创 2010-12-17 10:34:00 · 543 阅读 · 0 评论 -
NOJ 1149高精度乘法(另含高精度加、减&除详解)
<br />#include <iostream><br />using namespace std;<br />const long MAXN = 100000;<br />inline long& len(long* a)<br />{<br /> return a[MAXN-1];<br />}<br />void copy(long* to, long* scr)<br />{<br /> len(to) = len(scr);<br /> memcpy(to,scr,sizeof(long)*le原创 2010-12-19 08:34:00 · 502 阅读 · 0 评论 -
HDU1176 免费馅饼
<br />#include <stdio.h><br />#include <string.h><br />int DP[100003][11];<br />int max(int a,int b,int c)<br />{<br /> int m ;<br /> m=a ;<br /> m=b>m?b:m ;<br /> m=c>m?c:m ;<br /> return m ;<br />}<br />int main()<br />{<br /> int i,j,n,t,sum,x ;<br /原创 2010-12-19 08:35:00 · 382 阅读 · 0 评论 -
HDU 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】
<br />Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955<br /> 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);<br /> <br /> 正确的方程是:f[j]=max(f[j],f[j-转载 2010-12-19 08:36:00 · 523 阅读 · 0 评论 -
HDU 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】
<br />Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955<br /> 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);<br /> <br /> 正确的方程是:f[j]=max(f[j],f[j-转载 2010-12-19 08:35:00 · 465 阅读 · 0 评论 -
HDU 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】
<br />Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955<br /> 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);<br /> <br /> 正确的方程是:f[j]=max(f[j],f[j-转载 2010-12-19 08:36:00 · 497 阅读 · 0 评论 -
POJ1088 滑雪
<br />#include<stdio.h><br />#include<stdlib.h><br />int R,C,max,a[100][100]={10001},b[100][100];<br />int DFS(int sx,int sy)<br />{<br /> int i,x,y,tmp,dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};<br /> if(b[sx][sy])<br /> return b[sx][sy];<br /> b[sx][sy]=1;<原创 2010-12-21 10:40:00 · 502 阅读 · 0 评论 -
NOJ1081 合并石子
<br />#include<stdio.h><br />#include<stdlib.h><br />int m,n,N,A[10000];<br />int cmp(const void *a ,const void *b ) <br />{ <br /> return *(int *)b-*(int *)a; <br />}<br />long int f()<br />{<br /> int k,t;<br /> long int sum=0,sum1=0;<br /> qsort(A,n,siz原创 2010-12-21 10:43:00 · 535 阅读 · 0 评论 -
NOJ1267 N皇后(非递归算法)
<br />这次没有采用一般的递归算法来实现N皇后,下面是非递归算法~<br />#include<stdio.h><br />#include<math.h><br />#include<stdlib.h><br />#define M 100<br />int l[M];<br />int check(int x,int l[])<br />{<br /> int i;<br /> for(i=1;i<x;i++)<br /> if(l[i]==l[x]||(abs(i-x)==abs(l[i]-l[原创 2010-12-21 10:44:00 · 603 阅读 · 0 评论 -
NOJ1267 N皇后(非位运算)
<br />/*NQueen问题如果用简单的条件(即每次准备在第i行上找摆皇后的位置的时候,就从第i行的第0列到第n列<br />依次找符合条件的点(看和前面已经摆好皇后的i-1个皇后比较,看是否在同一列上是否在同一主对角线或<br />者副对角线上))搜索,这个过程耗时较多。解决方法:每放一个皇后,就将该皇后所在位置的列号作为<br />lie[]数组的下标,并将lie数组的该元素置为1,因为在矩阵中的特性(平行于主对角线的直线上的点的<br />横、纵坐标之差为定值(这边要加上n,因为数组下标没有负数)原创 2010-12-21 10:46:00 · 1670 阅读 · 0 评论 -
C/C++中const变量与指针所指内容的改变
先看一个很非常相当基础的C的代码哈~void main(){ const int a=5; int * b=(int*)&a; *b=8; printf("%d",a);}大家先想想这个地方的输出到底应该是什么吧!为了大家看的更清楚一些,我把程序稍稍修改一些,如下:#include int main(){ const i原创 2011-10-31 16:06:44 · 2056 阅读 · 1 评论