2011年9月4日
摘要: UVA_539 这个题目可以直接用深搜去解。#include<stdio.h>#include<string.h>int G[30][30],vis[30][30];int n,m,ans;void dfs(int i,int tot){ int j,flag; flag=0; for(j=0;j<n;j++) if(G[i][j]&&!vis[i][j]) { flag=1; vis[i][j]=1; vis[j][i]=1; dfs(j,tot+1); ... 阅读全文
posted @ 2011-09-04 21:52 Staginner 阅读(274) 评论(0) 推荐(0) 编辑
摘要: UVA_639这个题目可以先将横向相连的“.”看作一个块,并记录下块开始和结束的坐标,每个块中只能放一个rook。之后便顺序枚举每种方案并判断rook是否可以放在假设的位置,如果可以就继续深搜。当搜完搜有的块之后,就可以比较放置的rook总数与ans了,如果比ans大,则更新ans的值。#include<stdio.h>#include<string.h>int ans,n,num,dx[]={-1,1,0,0},dy[]={0,0,-1,1};int begin[20],end[20],a[10][10],vis[10][10];char b[10];int dfs( 阅读全文
posted @ 2011-09-04 19:21 Staginner 阅读(364) 评论(0) 推荐(0) 编辑
摘要: UVA_216 这个题目可以直接深搜,深搜的边界就是加入line的点为n,当总长度比标记过的长度小的时候,即可更新记录line的数组和总长度。#include<stdio.h>#include<string.h>#include<math.h>int n,x[10],y[10],vis[10];int temp[10],ans[10];double total;void dfs(int cur,double t){ int i; double k,t_x,t_y; if(cur==n) { if(t<total) { t... 阅读全文
posted @ 2011-09-04 11:08 Staginner 阅读(390) 评论(0) 推荐(0) 编辑
摘要: UVA_10474这个题目可以用Hash的思想,首先读入Marbles,进行排序,之后遍历一遍Marbles数组并给hash数组赋相应的值,其中hash[i]表示标号为i的Marble第一次出现的位置。 之后每读入一个Q,只需要判断对应的hash数组中的元素是否被赋值,并进行相应的输出即可。#include<stdio.h>#include<string.h>#include<stdlib.h>int a[10010],hash[10010];int cmp(const void *_p,const void *_q){ int *p=(int *)_p; 阅读全文
posted @ 2011-09-04 10:25 Staginner 阅读(507) 评论(0) 推荐(0) 编辑