摘要: 哇哇哇哇。。又A了一道。。刚写出来的,感觉好激动。。下午的时候看了下题目,题目大意为两行数字,上下相同的数字连线算一次匹配,求可能的最大匹配,规则是:I 连线必须且只能被另一条直线穿过。且这两条直线代表的数字不能相同。II 一个数字只能有一条连线。刚开始没什么想法,也有想到dp,不过没想到具体怎么实现。。晚上又仔细看了下,感觉dp应该可以做出来,用了好多for循环,不过如果按我的思路来理解会很简单的。。dp[i][j]表示第一行数字从第i个到n,第二行数字从第j个到m,这么些数字有多少个匹配。对于dp[i][j-1],只需要讨论b[j-1]与第一行的a[i]...a[n]的匹配情况。。看代码: 阅读全文
posted @ 2011-04-07 21:58 奋斗青春 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 题目的意思是把表达式中能去掉的括号都给去掉,但不改变运算符,能够去掉的左括号至少满足以下条件中的一个:1、括号左面不是‘-’2、最外层的括号3、单个变量外面的括号代码:# include<stdio.h># include<string.h>int main(){ int i,j,k,n,s[300],pre[300],visit[300],word; char str1[300],str[300]; scanf("%d",&n); getchar(); while(n--) { gets(str1); k=0; j=0; for(i=0;s 阅读全文
posted @ 2011-04-07 17:48 奋斗青春 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 题意:对于第一个例子:4 6A<BA<CB<CC<DB<DA<B若在输出第k行后所有字母都有序则输出:Sorted sequence determined afterk relations: y...yyy.若在输出第k行后出现矛盾,则输出:Inconsistency found afterk relations.若在输出m行后,仍无法排好序,则输出:Sorted sequence cannot be determined.思路:用adj[30][30]来表示没两个字母之间的关系,adj[i][j]=0表示还没有确定i和j之间的关系,adj[i][j]=1表 阅读全文
posted @ 2011-04-07 14:23 奋斗青春 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 昨天晚上写好的代码,交了几次都是wa,但是没找到什么地方有错误。。刚才又找了组测试数据发现有问题,就又检查了下代码,发现一个地方写错了,该过之后就AC了,哇哈哈。。。思路就是先用最短路算法dijkstra算法,求出到达每一个key的最短时间,然后再讨论任意两个key之间的关系,判断最后会不会停留在两点之间,代码:# include<stdio.h># include<string.h># define PI 0xfffffffint main(){ int i,j,tt,ans1,ans2,n,m,t=0,map[505][505],visit[505],low[505 阅读全文
posted @ 2011-04-07 11:00 奋斗青春 阅读(149) 评论(0) 推荐(0) 编辑