摘要: 用栈将不能匹配的存起来:括号匹配Time Limit: 1000 MSMemory Limit: 65536 KTotal Submit: 84(39 users)Total Accepted: 51(38 users)Special Judge:NoDescriptionLeyni得到了一个由"("和")"组成的字符串,比如"(())()","()","(()(()))"是括号匹配的,而")(","(()","(()))("是括号不匹 阅读全文
posted @ 2012-10-17 18:58 尔滨之夏 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 建立二叉排列树,让后中序遍历;Memory Limit: 65536 KTotal Submit: 187(37 users)Total Accepted: 90(35 users)Special Judge:NoDescription用计算机随机生成了N个0到1000000000(包含0和1000000000)之间的随机整数(N≤5000000),对于其中重复的数字,只保留一个,把其余相同的数去掉。然后再把这些数从小到大排序。请你完成“去重”与“排序”的工作Input输入有2行,第1行为1个正整数,表示所生成的随机数的个数:N第2行有N个用空格隔开的正整数,为所产生的随机数。Output输出 阅读全文
posted @ 2012-10-16 20:37 尔滨之夏 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 找出递推公式为an=an-1+an-2+an-3;用到的是快速幂与矩阵乘法。快速幂:求a的b次方时可直接用:int res=1;while(b){if(b&1)//判断b是否为奇数;res=a*res;a=a*a;b/=2;}return res;Final Destination IITime Limit: 1000 MSMemory Limit: 65536 KTotal Submit: 103(26 users)Total Accepted: 27(19 users)Special Judge:NoDescriptionJiaoZhu likes going on adventu 阅读全文
posted @ 2012-10-13 14:58 尔滨之夏 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 深度优先搜索及计划搜索: 下山Time Limit: 1000 MSMemory Limit: 65536 KTotal Submit: 74(33 users)Total Accepted: 45(33 users)Special Judge:NoDescription下面的矩阵可以想象成鸟瞰一座山,矩阵内的数据可以想象成山的高度。可以从任意一点开始下山。每一步的都可以朝“上下左右”4个方向行走,前提是下一步所在的点比当前所在点的数值小。例如处在18这个点上,可以向上、向左移动,而不能向右、向下移动。 1 2 3 4 516... 阅读全文
posted @ 2012-10-11 21:21 尔滨之夏 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #define MAX 100010 5 typedef struct{ 6 char s[10]; 7 int num; 8 }Number; 9 Number phone[MAX];10 int cmp(const void *p1,const void *p2)11 {12 return strcmp((*(Number*)p1).s,(*(Number*)p2).s);13 }14 int main()15 {16 int 阅读全文
posted @ 2012-10-10 19:07 尔滨之夏 阅读(262) 评论(0) 推荐(0) 编辑
摘要: Description在平面坐标系内,有两个坐标轴x轴和y轴。(x,y)表示点的坐标。有一点处于(x1,y1)位置上,他可以向相临8个位置移动(移动方式见下图)。划定范围:此点只可以在[0<=x<=300,0<=y<=300]范围内移动。要求:给出起始位置(x1,y1)和目标位置(x2,y2),要求同学求出从起始位置移动到目标位置所需的最少次数。Input输入包括多组测试用例。对于每组测试用例,包含4个正整数,x1,y1,x2,y2,范围均为[0,300]。Output输出移动所需的最少次数。Sample Input0 0 1 20 0 2 1Sample Output 阅读全文
posted @ 2012-10-09 21:43 尔滨之夏 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 转换一下思路,求的是走到step[n][n]的最小值,可以转换成到每个step[i][j]的最小值,进而转换成step[i][j-1]与step[i-1][j]比较大小。 1 #include<stdio.h> 2 int a[1001][1001]; 3 int main() 4 { 5 int n,i,j; 6 while(scanf("%d",&n)!=EOF) 7 { 8 for(i=1;i<=n;i++) 9 for(j=1;j<=n;j++)10 scanf("%d",&a[i][j]);11 ... 阅读全文
posted @ 2012-10-09 21:40 尔滨之夏 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 主要是灵活的运用学过的知识,然后找出数学规律就行。Description传说菱形具有魔法,而它越大,代表它具有的法力也越大,现在给你一个菱形的法力值,求你输出它的形状。如法力值为5时的菱形如下: ************ *Input输入有多组测试数据,每组为一个整数n(n = 0或3 <= n <= 29,且n为奇数)代表一个菱形所具有的法力值,n为0时代表输入结束,该行不做处理。Output对于每组测试数据,输出该法力值的菱形,用’*’字符代表菱形的身体,法力值实际上就是菱形对角线上’*’的个数,详细情况请看样例。Sample Input350Sample Output**** 阅读全文
posted @ 2012-10-09 07:43 尔滨之夏 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题目可以通过循环来简化,求周期。h=k%n,h就是将后面的h个字符移动到前面来,同时将前面(n-h)个字符平移到后面。我已经碰到很多通过周期思想来解题的题。可见这个点还是很重要的。而且还特别简单。但更重要的是学以致用,在做题的时候会用才重要。Input一个木马排列顺序,由一串字符串表示,长度不大于100000;第一行是一行字符串,第二行是反向旋转K次0 <= K <= 1000000000Output输出反向旋转K次之后的排列顺序Sample Inputabcd12341abcd12342Sample Output4abcd12334abcd12 1 #include<std 阅读全文
posted @ 2012-10-03 10:27 尔滨之夏 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 1 #include<stdio.h> 2 #include<string.h> 3 #define MAX 1020 4 int num,max,n,m; 5 int map[MAX][MAX],saw[MAX][MAX]; 6 int dir[4][2]={0,1,-1,0,1,0,0,-1}; 7 void mappond(int p1,int p2) 8 { 9 int k,x,y;10 for(k=0;k<4;k++)11 {12 x=p1+dir[k][0];13 y=p2+dir[k][1];14 if(x... 阅读全文
posted @ 2012-10-02 09:40 尔滨之夏 阅读(370) 评论(0) 推荐(0) 编辑