2013年2月15日

uva10098 - Generating Fast(快速生成有序排列)

摘要: 还是题意理解不清,导致wa了2次,题意理解了就好做了,几乎是照抄课本上的代码, 没意思:!方法一:生成可重集的排列:代码如下:#include #include #include using namespace std; char s[15]; void printf_permutation(int n, char *flag, int cur) { if(n==cur) { for(int i = 0; i #include #include using namespace std; int main () { int n; cha... 阅读全文
posted @ 2013-02-15 13:59 Primo... 阅读(148) 评论(0) 推荐(0) 编辑
2013年1月25日

uva127- "Accordian'' Patience(纸牌游戏)

摘要: 这个题是本人补做的,开始的时候弄不清楚,隔了一个学期,用c++做了出来。代码不难理解,做了这个题后,我只能说,acm这东西如逆水行舟,不进则退,不得不承认自己的代码能力下降了不少啊。比较明白的模拟题,我用的是指针数组。每个下标代表一摞纸牌。不断的模拟发牌过程。小技巧就是标识数组结尾。我用的是-1代码如下:#include #include #include typedef struct card{//定义纸牌数据类型 char suit, value; struct card *next; }card; typedef struct{//定义每一摞牌的数据类型 c... 阅读全文
posted @ 2013-01-25 13:50 Primo... 阅读(228) 评论(0) 推荐(0) 编辑
2013年1月22日

uva10054-The Necklace(项链)

摘要: 图的判断欧拉回路+输出路径回路的判定要从度和连通两方面判定(但此题测试数据水的很,我只写了个度的判定)路径输出一定要后序压栈输出(就是后序遍历一下)先序不行的哦!!!举个反例自己先走路径1,再走路径2,先序和后序分别试一下,差不多就知道为什么要后序输出路径了我的代码如下:#include #include int G[55][55]; int du[55]; void dfs(int x) { for(int i=50;i>=0;i--) if(G[x][i]) { G[x][i]--; G[i][x]--; dfs(... 阅读全文
posted @ 2013-01-22 16:42 Primo... 阅读(145) 评论(0) 推荐(0) 编辑
2013年1月5日

uva10129- Play on Words(单词)

摘要: 做题还是得站在原有结论的基础上,否则很浪费时间的。就像这次,开始的时候想自己想办法判通路,但是没有成功,后来看了欧拉判断法则,才把程序写出来。代码如下:#include #include int str[27][27], visit[27], du[27][2];//用数组记录字母的出度与入度 void read() {//读取字符串,记录开头与结尾的字母 int n; char por, tear, temp; scanf("%d",&n); getchar(); while(n--) { scanf("%c",&por);... 阅读全文
posted @ 2013-01-05 23:37 Primo... 阅读(176) 评论(0) 推荐(0) 编辑
2012年12月17日

UVA10305- Ordering Tasks

摘要: 思路是老师上课讲的。先找入度为0的点,然后删去该点以及从该点出去的边,然后再找入度为0的点,直到找不到为止:WA了3次主要是因为把序号为1 的点当作了第一个入度为0的点。这在题目中是没有描述的,所以第一个也得找。代码如下:#include #include using namespace std; const int maxn = 100+10; int topo[maxn][maxn], visit[maxn], m, n, flag=0; int init()//输入边 { for(int i = 0; i >a>>b; if(a!=b) top... 阅读全文
posted @ 2012-12-17 22:47 Primo... 阅读(122) 评论(0) 推荐(0) 编辑

UVA10596- Morning Walk

摘要: 开始的时候我钻了牛角尖,总是想用dfs()找到一条欧拉回路,憋了好几天也没憋出来,就只好屈从了欧拉定理,代码如下,不算高效的代码:#include #include using namespace std; int n, m, start = 0, in[250][250], visit[250], du[250]; int input() { memset(in,0,sizeof(in)); memset(visit,0,sizeof(visit)); memset(du,0,sizeof(du)); cin>>m; int a, b, _m=m;... 阅读全文
posted @ 2012-12-17 17:16 Primo... 阅读(130) 评论(0) 推荐(0) 编辑
2012年12月16日

UVA10004- Bicoloring(二染色)

摘要: 用的深搜,dfs();挨个点染色,有边的两点染不用的颜色,分别用1,-1表示,同时判断跟这个点有联系的点是否有相同的颜色。代码不长:#include #include using namespace std; int n, in[250][250], visit[250]; int input() { memset(in,0,sizeof(in)); memset(visit,0,sizeof(visit)); int t; cin>>t; while(t--) { int a, b; cin>>a>>b; ... 阅读全文
posted @ 2012-12-16 16:35 Primo... 阅读(127) 评论(0) 推荐(0) 编辑
2012年12月14日

UVA10167- Birthday Cake(生日蛋糕)

摘要: 开始的时候看到人家交的代码有8ms 过的,以为是用的新算法,而不是耗时的暴力,但是经过层层优化,我发现暴力并不是想像中的那么耗时阿,虽然没有达到8ms 的境界,但是我的代码着实优化了不少,时间有限,更省时的代码待以后有时间再讨论,暂且贴下目前的代码。代码如下;#include using namespace std; int n, xy[150][2]; int bao (int a, int b) { int count = 0; for(int i = 0; i 0)count++; else if(xy[i][0]*a+xy[i][1]*b==0)ret... 阅读全文
posted @ 2012-12-14 19:51 Primo... 阅读(191) 评论(0) 推荐(0) 编辑
2012年12月11日

UVA10557-XYZZY

摘要: 就是找正环,再找路径,详细的待以后再讨论先贴上代码:dfs+dfs:#include #include using namespace std; struct Room{ int value,count; int list[100]; }; Room room[150]; int n, value[150], visit[150] = {0, 0, 0};; void input() { for(int i = 1; i >room[i].value>>room[i].count; int len = room[i].count; f... 阅读全文
posted @ 2012-12-11 00:23 Primo... 阅读(210) 评论(0) 推荐(0) 编辑
2012年11月29日

UVA532-Dungeon Master(三维迷宫)

摘要: 还是广搜的题,只不过题意有点吓人,什么三维的迷宫,搜索最短的路径。题目不难。不作多余的解释;代码如下:#include #include using namespace std; struct Node{ int x,y,z,len; }; char ch[40][40][40]; bool vis[40][40][40]; int go[6][3] = {{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,1},{0,0,-1}};//需要遍历的六个方向 int l, r, c, x_, y_ , z_; Node node[30000];//用于存储节... 阅读全文
posted @ 2012-11-29 12:48 Primo... 阅读(166) 评论(0) 推荐(0) 编辑