上一页 1 2 3 4 5 6 7 ··· 13 下一页
摘要: Floyd算法1.定义概览Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。Floyd-Warshall算法的时间复杂度为O(N3),空间复杂度为O(N2)。2.算法描述1)算法思想原理: Floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,我们需要为这个目标重新做一个诠释(这个诠释正是动态规划最富创造力的精华所在) 从任意节点i到任意节点j的最短路径不外乎2种可能,1是 阅读全文
posted @ 2014-03-17 17:37 龙腾四海365 阅读(352) 评论(0) 推荐(0)
摘要: Dijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述:在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短路径。(单源最短路径)2.算法描述1)算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集 阅读全文
posted @ 2014-03-17 16:43 龙腾四海365 阅读(373) 评论(0) 推荐(0)
摘要: 某种序列时间限制:3000 ms | 内存限制:65535 KB难度:4描述数列A满足An = An-1 + An-2 + An-3, n >= 3编写程序,给定A0, A1 和 A2, 计算A99输入输入包含多行数据 每行数据包含3个整数A0, A1, A2 (0 #include #define MAX 1010int a[MAX],b[MAX],c[MAX],sum[MAX];void init(int x,int *a){ int i=0; while(x) { a[i++]=x%10; x/=10; }}int main(){ ... 阅读全文
posted @ 2014-03-16 17:49 龙腾四海365 阅读(424) 评论(0) 推荐(0)
摘要: 整数划分时间限制:3000 ms | 内存限制:65535 KB难度:3描述将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。正整数n的这种表示称为正整数n的划分。求正整数n的不同划分个数。例如正整数6有如下11种不同的划分:6;5+1;4+2,4+1... 阅读全文
posted @ 2014-03-16 16:44 龙腾四海365 阅读(337) 评论(0) 推荐(0)
摘要: 动态规划的基本思想:将一个问题分解为子问题递归求解,且将中间结果保存以避免重复计算。通常用来求最优解,且最优解的局部也是最优的。求解过程产生多个决策序列,下一步总是依赖上一步的结果,自底向上的求解。动态规划算法可分解成从先到后的4个步骤:1. 描述一个最优解的结构,寻找子问题,对问题进行划分。2. 定义状态。往往将和子问题相关的各个变量的一组取值定义为一个状态。某个状态的值就是这个子问题的解(若有k个变量,一般用K维的数组存储各个状态下的解,并可根 据这个数组记录打印求解过程。)。3. 找出状态转移方程。一般是从一个状态到另一个状态时变量值改变。4.以“自底向上”的方式计算最优解的值。5.从已 阅读全文
posted @ 2014-03-16 12:00 龙腾四海365 阅读(311) 评论(0) 推荐(0)
摘要: 苹果时间限制:3000 ms | 内存限制:65535 KB难度:3描述ctest有n个苹果,要将它放入容量为v的背包。给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值。输入有多组测试数据,每组测试数据第一行为2个正整数,分别代表苹果的个数n和背包的容量v,n、v同时为0时结束测试,此时不输出。接下来的n行,每行2个正整数,用空格隔开,分别代表苹果的大小c和价钱w。所有输入数字的范围大于等于0,小于等于1000。输出对每组测试数据输出一个整数,代表能放入背包的苹果的总价值。样例输入3 31 12 13 10 0样例输出2来源动态规划经典问题 #include #include i 阅读全文
posted @ 2014-03-16 11:57 龙腾四海365 阅读(122) 评论(0) 推荐(0)
摘要: 开心的小明时间限制:1000 ms | 内存限制:65535 KB难度:4描述小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N 元(可以等于N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j 件物品的价格为v[j], 阅读全文
posted @ 2014-03-16 11:55 龙腾四海365 阅读(226) 评论(0) 推荐(0)
摘要: 问题描述Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路。道路被用来连接N个牧场,牧场被连续地编号为1到N。每一个牧场都是一个奶牛的家。FJ计划除去P条道路中尽可能多的道路,但是还要保持牧场之间 的连通性。你首先要决定那些道路是需要保留的N-1条道路。第j条双向道路连接了牧场Sj和Ej(1 2 #include 3 #include 4 using namespace std; 5 int pre[10010],s[10010]; 6 typedef struct IN 7 { 8 int a,b; 9 int c;10 }IN;11 IN mp[... 阅读全文
posted @ 2014-03-16 11:26 龙腾四海365 阅读(1153) 评论(0) 推荐(0)
摘要: 畅通工程Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14215Accepted Submission(s): 5875Problem Description省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。Input测试输入包含若干测试用例。每个测试用例的第 阅读全文
posted @ 2014-03-12 20:27 龙腾四海365 阅读(152) 评论(0) 推荐(0)
摘要: 最小生成树prim算法实现所谓生成树,就是n个点之间连成n-1条边的图形。而最小生成树,就是权值(两点间直线的值)之和的最小值。首先,要用二维数组记录点和权值。如上图所示无向图:int map[7][7]; map[1][2]=map[2][1]=4; map[1][3]=map[3][1]=2; ......然后再求最小生成树。具体方法是:1.先选取一个点作起始点,然后选择它邻近的权值最小的点(如果有多个与其相连的相同最小权值的点,随便选取一个)。如1作为起点。visited[1]=1;pos=1;//用low[]数组不断刷新最小权值,low[i](0 3 #include 4 #de... 阅读全文
posted @ 2014-03-12 19:40 龙腾四海365 阅读(5235) 评论(0) 推荐(0)
摘要: 布线问题时间限制:1000 ms | 内存限制:65535 KB难度:4描述南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1、把所有的楼都供上电。2、所用电线花费最少输入第一行是一个整数n表示有n组测试数据。(n 2 #include 3 #include 4 using namespace std; 5 6 int map[550][550],vis[550],low[550]; 7 int n; 8 int prim() 9 {10 int i,j,pos,min,sum=0;11 memset(low,0,size... 阅读全文
posted @ 2014-03-12 18:34 龙腾四海365 阅读(189) 评论(0) 推荐(0)
摘要: 回文字符串时间限制:3000 ms | 内存限制:65535 KB难度:4描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。输入第一行给出整数N(0 2 #include 3 char str1[1010],str2[1010]; 4 int s[1010][1010]; 5 6 int main() 7 { 8 int T; 9 scanf("%d", 阅读全文
posted @ 2014-03-12 17:22 龙腾四海365 阅读(145) 评论(0) 推荐(0)
摘要: 单调递增最长子序列时间限制:3000 ms | 内存限制:65535 KB难度:4描述求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4输入第一行一个整数0 2 #include 3 char str[10010]; 4 int s[10010]; 5 int main() 6 { 7 int T; 8 scanf("%d%*c",&T); 9 while(T--)10 {11 int i,j,len,max=1;12 gets(str);13 len=strlen(str);... 阅读全文
posted @ 2014-03-12 15:30 龙腾四海365 阅读(153) 评论(0) 推荐(0)
摘要: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。如1,2,3三个元素的全排列为:1,2,31,3,22,1,32,3,13,1,23,2,1共3*2*1=6种 3!方法一:递归法 1 //代码---递归 2 #include 3 #include 4 const int MAX=11; 5 int deep,count; 6 int a[MAX]; 7 bool visit[MAX]; 8 void dfs(int count){ 9 if(count==deep... 阅读全文
posted @ 2014-03-10 09:48 龙腾四海365 阅读(139) 评论(0) 推荐(0)
摘要: 小希的迷宫Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22465Accepted Submission(s): 6862Problem Description上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提 阅读全文
posted @ 2014-03-09 19:46 龙腾四海365 阅读(200) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 13 下一页