上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 16 下一页
摘要: 题目意思很简单了,输入一个行数和列数相同的矩阵a[n][n]然后求最大的子矩阵和。它实际上就是最大子段和的二维推广,可以按照一维的思路来做。首先将每一列的和压缩成一个b[j]数组的元素,它代表a[i1][j]+a[i1+1][j]+......+a[i2][j]的和,这是保持列数不变再把它压缩成一个元素,这样进行压缩后实际上就是求b[1].....b[j]..b[n]的最大子段和,这就转化为一维的情况。View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 #define N 101 5 int a[N][N]; 6 阅读全文
posted @ 2012-03-28 16:48 zhongya 阅读(269) 评论(0) 推荐(0) 编辑
摘要: View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main() 5 { 6 int i, j, ncases, n; 7 int a,b,sum; 8 scanf("%d",&ncases); 9 while( ncases-- )10 {11 b=-1, sum = -9999; //其中的值会有负数,所以b,sum要先设负值12 scanf("%d",&n); 13 for(i=1; i<=n; i++)14 ... 阅读全文
posted @ 2012-03-23 22:52 zhongya 阅读(163) 评论(0) 推荐(0) 编辑
摘要: View Code 1 不要把它当做一般的水题看,尽管算法比较简单属于 2 入门的DP可是测试数据真的很坑爹!一开始写了个函 3 数将start,end,a[],设为全局变量可还是过不了,最后 4 我把函数全写在了主函数内了,全部改成局部变量,最后过了! 5 #include<stdio.h> 6 #include<stdlib.h> 7 8 int main() 9 {10 int i, ncases, n, j,sum,b,k;11 int a[100001],start,end;12 13 scanf("%d",&ncases);14 阅读全文
posted @ 2012-03-23 19:36 zhongya 阅读(172) 评论(0) 推荐(0) 编辑
摘要: View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #define MAX 1000 5 6 int c[MAX][MAX],len1,len2; 7 char x[MAX],y[MAX]; 8 void LCSLength(int m,int n,char *x,char *y) 9 {10 int i,j;11 for(i=0; i<m; i++) 12 c[i][0] = 0; 13 for(i=0; i<n; i++)14 c[0][i] = 阅读全文
posted @ 2012-03-21 21:41 zhongya 阅读(206) 评论(0) 推荐(1) 编辑
摘要: 最近这几个星期一直在做搜索的题,关于搜索比刚是学的时候有了更深刻的了解,普通的对于我来说已经很好解决,不过碰到难的像是双向BFS或是关于特殊状态的存储这一类的题还是不太会做,自己对此理解的也不够深刻,还是很仰慕那些神牛级的人物啊!说说BFS吧,做题是肯定是用到队列啦,BFS类似于层次遍历是一层一层向外扩展,通常用来求最小的步数,最短距离神马的。借助于队列可将每一步扩展的数值保存在队列里,再出队列判断是否满足要求,如果满足要求就停止打印步数,如果不满足则继续遍历想外层扩展,知道找到位置才停下。最后再用while循环时不要忘了一定要清空队列,应为队列里可能保存着上次遍历留下的值;有时也会... 阅读全文
posted @ 2012-03-18 11:28 zhongya 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 思路很简单,简单的素数环,相邻位必定是一奇一偶,当n为奇数时就不必在判断了,输出肯定木有素数环(剪枝的重要判定条件),因为n为奇数时奇数的数量一定大于偶数的数量,最后一定存在两个奇数相连(雀巢原理)。 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<math.h> 5 6 int A[20],visit[20],ok,n; 7 int isp[40]={0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0 阅读全文
posted @ 2012-03-18 08:25 zhongya 阅读(414) 评论(0) 推荐(1) 编辑
摘要: 题目的本质就是叫你求图中连通分支的数目。 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 5 int dx[4] = {1,-1, 0, 0}; 6 int dy[4] = {0, 0,-1, 1}; 7 int map[101][101]; 8 int visit[101][101],num,col,row; 9 10 void DFS(int x,int y)//求出图中所有的连通分支简单DFS遍历11 {12 int i, j, x1, y1;13 if(visit[x][ 阅读全文
posted @ 2012-03-16 21:40 zhongya 阅读(155) 评论(0) 推荐(1) 编辑
摘要: 一看到此题想都没想就用简单的回溯,可是写好代码测试样里也通过已提交就是TLE;后来请教了大神他说测试数据可能有多组单纯的输出可能会超时,好吧!我把每种情况都提前算好放在数组里接收一个我就输出一个,这样提前就把N皇后给初始化,最后输出果断AC了。 1 #include<cstdio> 2 #include<iostream> 3 4 using namespace std; 5 6 int N, visit[3][30], tot, C[50]; 7 8 void dfs(int cur,int N) 9 {10 int i, j; 11 if(cur == ... 阅读全文
posted @ 2012-03-10 17:17 zhongya 阅读(143) 评论(0) 推荐(1) 编辑
摘要: 1 #include<stdio.h> 2 #include<math.h> 3 4 int w[25], min, ncases, total, i; 5 void dfs(int cur, int sum, int a[]) 6 { 7 int t; 8 if(cur == ncases) return ; 9 t =(int)fabs(total-sum-sum);10 if(t < min) min = t;11 dfs(cur+1, sum, a);12 dfs(cur+1, sum+a[cur], a);13 } 14 15 in... 阅读全文
posted @ 2012-03-07 22:29 zhongya 阅读(214) 评论(0) 推荐(1) 编辑
摘要: 此题的大致意思是在一个迷宫内,营救天使,r代表天使的朋友a代表天使,x代表卫兵;见到卫兵就打死他这要多花1各单位时间,问你要多长时间才能到达天使所处的位置。一见到此题第一反应就光搜代码很快就写完了,测试样例通过,直接提交我傻眼了,WA一直WA纠结死了!我不信邪就去搜别人代码,第一眼看到的是优先队列。我恍然大悟,我用的是普通队列只能一步步往外搜不能停顿,这是普通队列的优点也是缺点。结果我使用优先队列后只是在我代码的基础上稍作改动即实现了优先队列的功能,因为优先队列是按顺序从小到大排列时间的,所以用稍作修改果断0ms通过,真是开心啊! 1 #include<cstdio> 2 #inc 阅读全文
posted @ 2012-03-06 20:15 zhongya 阅读(250) 评论(0) 推荐(1) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 16 下一页