上一页 1 2 3 4 5 6 7 8 9 10 ··· 28 下一页

2012年8月17日

NYOJ 289 苹果 (dp问题之01背包)

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=289思路:同NYOJ 49 开心的小明 动态规划问题dp代码如下: 1 #include <stdio.h> 2 #include <string.h> 3 #define N 1001 4 int dp[N]; 5 int c[N],w[N]; 6 int max(int x,int y) 7 { 8 return x>y?x:y; 9 }10 int main()11 {12 int n,v,i,j;13 while (scanf("%d%d&q 阅读全文

posted @ 2012-08-17 19:17 mycapple 阅读(333) 评论(0) 推荐(0) 编辑

NYOJ 36 最长公共子序列

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=36思路:dp[i][j]表示 s1 以 i结尾和 s2 以 j 结尾的最长公共子序列长度;if(i==0||j==0) dp[i][j]=0;if(s1[i]==s2[j])dp[i][j]=dp[i-1][j-1]+1else dp[i][j]=max(dp[i][j-1],dp[i-1][j]);代码如下: 1 2 #include<stdio.h> 3 #include<string.h> 4 #include<stdlib.h> 5 int dp 阅读全文

posted @ 2012-08-17 17:56 mycapple 阅读(255) 评论(0) 推荐(0) 编辑

01背包问题总结(一)

摘要: 01背包问题总结一 问题描述:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 所谓01背包,表示每一个物品只有一个,要么装入,要么不装入。二 解决方案: 考虑使用dp问题 求解,定义一个递归式 opt[i][v] 表示前i个物品,在背包容量大小为v的情况下,最大的装载量。 opt[i][v] =max(opt[i-1][v] , opt[i-1][v-c[i]] + w[i])解释如下: opt[i-1][v] 表示第i件物品不装入背包中,而opt[i-1][v-c[i]] + w[i] 表示第i件物品装入背包中。 花费如下 阅读全文

posted @ 2012-08-17 15:26 mycapple 阅读(237) 评论(0) 推荐(0) 编辑

动态规划(基础篇)

摘要: 1.什么是动态规划:动态规划,和分治法一样,是通过组合子问题的解而解决整个问题的。但不同的是,分治算法是指将问题划分成一些独立的子问题,递归求解各子问题,然后合并子问题的解而得到原问题的解。而动态规划适用于子问题不是独立的情况,也就是各子问题包含公共的子子问题。动态规划对每个子子问题只求解一次,将其结果保存在一张表中,从而避免每次遇到各个子问题时重新计算答案。2.动态规划中的几个重要性质:2.1最优子结构:用动态规划求最优化问题的第一步是描述最优解的结构。如果问题的一个最优解中包含子问题的最优解,则该问题具有最优子结构。当一个问题具有最优子结构时,提示我们动态规划可能会适用(注意,在这种情况下 阅读全文

posted @ 2012-08-17 15:25 mycapple 阅读(259) 评论(0) 推荐(0) 编辑

NYOJ 558 一二三

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=558 1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int n,m; 6 char a[6]; 7 scanf("%d",&n); 8 while(n--) 9 {10 scanf("%s",a); 11 m=strlen(a);12 if(m==3)13 {14 if((a[0]=='o'... 阅读全文

posted @ 2012-08-17 10:15 mycapple 阅读(208) 评论(0) 推荐(0) 编辑

NYOJ 117 求逆序数 (归并排序)

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=117思路:归并排序,表示不太懂。。。。算法分析:这个题的算法是利用归并排序的 merge() 函数,在处理在处理两段时,恰好要比较大小,顺便把逆数也求出来 故时间复杂度o(nlogn); 1 #include<stdio.h> 2 #include<stdlib.h> 3 #define N 1000010 4 long long ans; 5 int a[N]; 6 void merge(int s1,int e1,int s2,int e2) 7 { 8 int 阅读全文

posted @ 2012-08-17 09:39 mycapple 阅读(1115) 评论(0) 推荐(0) 编辑

2012年8月16日

NYOJ 32 组合数

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=32思路:递归 1 #include<stdio.h> 2 #include<stdlib.h> 3 int a[100]; //存储大数 4 void f(int m, int k) 5 { 6 int i,j; 7 for(i=m;i>=k;i--) 8 { 9 a[k]=i;10 if(k>1)11 f(i-1,k-1);12 else13 {14 fo... 阅读全文

posted @ 2012-08-16 21:25 mycapple 阅读(331) 评论(0) 推荐(0) 编辑

NYOJ 95 众数问题(hash)

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=95算法分析:hash映射 1 #include<stdio.h> 2 #include<string.h> 3 #define N 100010 4 int a[N]; //存放数字t出现的次数 5 int main() 6 { 7 int m,n,i,t,p,ans; 8 scanf("%d",&m); 9 while(m--)10 {11 ans=0;12 memset(a,0,sizeof(a));13 ... 阅读全文

posted @ 2012-08-16 20:29 mycapple 阅读(250) 评论(0) 推荐(0) 编辑

NYOJ 53 不高兴的小明

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=53 1 #include<stdio.h> 2 int main() 3 { 4 int n,x,t,s,i,j,max; 5 scanf("%d",&n); 6 while(n--) 7 { 8 j=0;s=0,max=0; 9 for(i=1;i<=7;i++)10 {11 scanf("%d%d",&x,&t);12 s=x+t;13 ... 阅读全文

posted @ 2012-08-16 19:59 mycapple 阅读(327) 评论(0) 推荐(0) 编辑

NYOJ 76 超级台阶

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=76 1 #include<stdio.h> 2 int main() 3 { 4 int n,i,m; 5 int f[50]; 6 scanf("%d",&n); 7 while(n--) 8 { 9 scanf("%d",&m);10 f[1]=0;f[2]=1;f[3]=2;11 for(i=4;i<=m;i++)12 f[i]=f[i-1]+f[i-2];13 p... 阅读全文

posted @ 2012-08-16 19:10 mycapple 阅读(201) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 ··· 28 下一页

导航