上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 16 下一页
摘要: View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #define N 760 5 #define Maxint 99999999 6 7 double lowcost[N], c[N][N]; 8 double x[N], y[N]; 9 int towns, m, s[N], closest[N],path[N][N];10 11 double distance(int i,int j)//用double为了防止int数据存不下12 {13 return (x 阅读全文
posted @ 2012-04-19 17:07 zhongya 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 解题思路:看过题就知道是要找规律的,而从下列式子中不难发现, S(1)=1,//在s(n)从左往右看 S(2)=11, s(1)中有1个1; S(3)=21, s(2)中有2个1; S(4)=1211, s(3)中有1个2和1个1; S(5)=111221,s(4)中有1个1、1个2和2个1; S(6)=312211, s(5)中有3个1、2个2和1个1;……让求s(n)的长度,首先必须找出 s(n)的组成结构,其实仔细一看,会发现s(n)的组成是跟 s(n-1) 密切相关的,过程如上所述。由于 n<=30,数据不大,我就定义了一个二维字符数组来保存s(n)的所有信息,然后就可以求出所需 阅读全文
posted @ 2012-04-17 22:33 zhongya 阅读(132) 评论(0) 推荐(0) 编辑
摘要: View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main() 5 { 6 int ncases; 7 char b[21], g[21], x[20]; 8 9 scanf("%d",&ncases);10 while( ncases-- )11 {12 scanf("%s%s%s",b,g,x);13 printf("%s will survive\n",g);14 }15 system("pause"); 16 阅读全文
posted @ 2012-04-17 22:30 zhongya 阅读(91) 评论(0) 推荐(0) 编辑
摘要: View Code 1 #include<stdio.h> 2 #include<math.h> 3 #include<stdlib.h> 4 5 int main() 6 { 7 int ncases, d, t; 8 double n1, n2, num1,num2,k; 9 int sum1, sum2;10 11 scanf("%d",&ncases);12 while( ncases-- )13 {14 scanf("%d%d",&d,&t);15 num1 = 0.0; num2 = 阅读全文
posted @ 2012-04-17 22:29 zhongya 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题目大意是给你几组数据,表示每个人之间的信息传递的时间,要求所用时间最短的人的编号和所用的最短时间。可以用图论中的Floyd算法,经过Floyd算法后在邻接矩阵当中的就有了每个人的信息传递时间及编号;接下来要做的是从邻接矩阵中查找信息。View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 int cost[101][101],n; 6 void Floyd() 7 { 8 int i,j,k; 9 for(k=1; k<=n; k++)10 for(i=1 阅读全文
posted @ 2012-04-10 22:37 zhongya 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给你几种货币,并给出货币之间的汇率,问你是否存在有一种货币经过兑换后,可以盈利赚钱,这就是所谓的炒外汇吧!嘿嘿!View Code #include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>int main(){ int i, j, k, ncases, n, ans=1, flag; char name[30][300]; char from[31], to[31]; double rate, cur[31][31]; while(scanf(" 阅读全文
posted @ 2012-04-10 22:25 zhongya 阅读(156) 评论(0) 推荐(0) 编辑
摘要: View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 int c[10001],w[10001],f[10001]; 6 int main() 7 { 8 int i, j, n, v; 9 10 while(scanf("%d%d",&n,&v)&&n&&v)11 {12 memset(f,0,sizeof(f)); 13 for(i=0; i<n; i++)14 ... 阅读全文
posted @ 2012-03-30 22:41 zhongya 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 网上搜的: 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出,谢谢!----第一节----初识动态规划-------- 经典的01背包问题是这样的: 有一个包和n个物品,包的容量为m,每个物品都有各自的体积和价值,问当从这n个物品中选择多个物品放在包里而物品体积总数不超过包的容量m时,能够得到的最 阅读全文
posted @ 2012-03-30 22:18 zhongya 阅读(723) 评论(0) 推荐(0) 编辑
摘要: 看了两个多小时的01背包问题,这是做出来的第一道,Happy~!提议可以这样来理解,要求邮票的分值之差最小,就是邮票分成两堆即两个容器,而每张邮票只有选和不选两种状态,所以只要求出每个容器的最大装载量即可,这样就转化为01背包问题了。这和zb的生日那道题一样只要代码稍作休改就能过。score[j]代表的是容量为j的容器所能装载邮票的最大分值。得出递推关系式:score[j] = score[j] > score[j-a[i]]+a[i] ? score[j] : score[j-a[i]]+a[i];其中a[i]是第i个邮票的分值View Code 1 #include<stdio 阅读全文
posted @ 2012-03-30 22:10 zhongya 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 此题是数字三角形的变形,有些细节要注意,当KK走倒最后一列是只能向下走,当KK走到最后一行时,只能向右走;这两种情况要单独考虑。d[i][j]指在i,j这个位置走到右下角所能吃的虫子数目。View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 int main() 6 { 7 int i,j,N,M; 8 int a[25][25],d[25][25]; 9 10 scanf("%d%d",&N,&M);11 for(i=1; 阅读全文
posted @ 2012-03-29 14:58 zhongya 阅读(271) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 16 下一页