【Note】挑战程序设计竞赛
Thereisnospon
在校本科生,渣渣一枚,正在向成为一名大牛而努力~
展开
-
选取硬币问题
有1元,5元,10元,50元,100元,500元的硬币各c0,c1,c2,c3,c4, c5枚 现在要使用这些硬币支付n元,问最少需要多少枚硬币,假设至少存在一种方案。 应该尽可能使用500元的,然后再使用100元的.....使用贪心策略。 #include "stdafx.h" #include #include using namespace std; const int原创 2015-04-18 15:22:18 · 483 阅读 · 0 评论 -
区间问题
有n项工作,每项分别在si开始,ti结束,对于每项工作一旦开始不能中途结束,参与 的工作时间不能重叠,尽可能多的参加工作,求解最多项。 应该在每次可以选择的工作中,选择出最早结束的那个工作进行。 #include #include #define MAX 500 using namespace std; int S[MAX];//开始时间 int T[MAX];//结束时间 pair原创 2015-04-18 15:45:32 · 379 阅读 · 0 评论 -
迷宫最短路
#include #include #include #include #define MAX 100 using namespace std; const int INF = 10; typedef pairP; int d[MAX][MAX]; char imap[MAX][MAX]; int n, m; int sx, sy; int gx, gy; int To[4][2] = { {原创 2015-04-18 13:56:04 · 621 阅读 · 0 评论 -
部分和问题
#include "stdafx.h" #include #define MAX 100 using namespace std; int n=7, k; int num[100] = { 1, 3, 4, 2, 5, 6, 7 }; bool dfs(int i, int sum) { if (i == n)return sum == k; if (dfs(i + 1, sum))retur原创 2015-04-18 13:58:41 · 274 阅读 · 0 评论 -
Lake Counting
#include "stdafx.h" #include #define MAX 500 using namespace std; char imap[MAX][MAX]; int n, m; void dfs(int x, int y) { imap[x][y] = '.'; for (int dx = -1; dx <= 1; dx++) for (int dy = -1; dy <=原创 2015-04-18 14:00:05 · 303 阅读 · 0 评论 -
POJ 3617 Best Cow Line
给定长度N的字符串S,要求构造一个长度为N的字符串T,起初T是一个空串,随后反复进行如下操作: 1.从字符串S的首部删除一个字符添加到T的末尾。 2.从字符串S的尾部删除一个字符添加到T的末尾。 要求构造的字符串T的字典序最小。 可以按照如下算法: 按照字典序比较当前字符串S及将它翻转后的字符串S‘, 如果S>S',则从S开头删除一个字符添加到T末尾。 如果S #i原创 2015-04-21 14:33:59 · 652 阅读 · 0 评论 -
01背包问题
#include #include #include #define MAX 100 using namespace std; int n,w; int value[MAX]={3,2,4,2}; int weight[MAX]={2,1,3,2}; int dp[MAX][MAX]; //朴素方法 int ans2(int i,int j) { int res; if(i==n)原创 2015-12-03 13:49:10 · 2604 阅读 · 0 评论 -
最长公共子序列LCS
#include #include #include #define MAX 100 int dp[MAX][MAX]; using namespace std; void solve(string a,string b) { memset(dp,0,sizeof(dp)); for(int i=0;i<a.size();i++) { for(int j=0原创 2015-12-03 13:50:15 · 419 阅读 · 0 评论