上一页 1 ··· 4 5 6 7 8
摘要: 大概理解了一下别人的代码#include "iostream"#include "cstdio"#include "cmath"#include "algorithm"using namespace std;const double PI=acos(-1.0);const int size=1005;const double eps=1e-8;struct Point{ int x, y;}p[size];int s[size], top;int zfcmp(int d){ if(abs(d) < eps) 阅读全文
posted @ 2012-03-29 21:42 shijiwomen 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 汉诺塔是一种生活中的游戏,从现实生活的角度考虑,逐层的递归,假定是最优,从而形象的得出递归方程f(n)=3*f(n-1)+2,f(1)=2;先将n-1个通过B柱放到C柱,再将第N个放到B柱,然后再将n-1个通过B柱放到A柱再将第N个放到C柱,最后将n-1个放到C柱,n-1个总共3次,第N个总过2次再将递归式进行递推得到公式pow(3,n)-1#include <math.h>#include <stdio.h>int main(void){ int n; while (scanf("%d", &n) != EOF) printf(" 阅读全文
posted @ 2012-03-29 21:02 shijiwomen 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 一看汉诺塔的次数,第一感觉是数学题,但一看答案是dp出乎意料,对dp有了更加全面的理解,主要是递归的规划,从复杂的递归回归的基础的递归#include <stdio.h>#include <math.h>__int64 ans[65];double _min,temp,f[65];int main(){ int i,j,n; f[0]=1; for(i=1;i<65;i++) f[i]=f[i-1]*2; ans[1]=1; for(i=2;i<65;i++) { _min=pow(2,64)-1; for(j=1;j<i;j++) { temp=2* 阅读全文
posted @ 2012-03-29 20:51 shijiwomen 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 基础二分图应用,注意理解#include <stdio.h>#include <string.h>int k,m,n,a[501][501];int visit[501];int linker[501];int dfs(int u){ int i; //visit[u]=1; for(i=1;i<=n;i++) { if(a[u][i]&&!visit[i]) { visit[i]=1; if(linker[i]==-1||dfs(linker[i])) { ... 阅读全文
posted @ 2012-03-29 17:59 shijiwomen 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 主要是欧拉回路的基础知识,用并查集加工处理注意欧拉回路和并查集的细节判断不能粘贴复制,一定要理解之后再敲一遍代码,否则浪费更多的时间#include <stdio.h>#include <string.h>int vis[30],in[30],out[30],father[30];int findx(int t){ if(father[t]!=t) father[t]=findx(father[t]); return father[t];}void merge(int v,int g){ int x,y; x=findx(v); y=findx(g); if(x!=y) 阅读全文
posted @ 2012-03-29 17:54 shijiwomen 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 代码不能粘贴复制,只有充分理解之后自己亲手敲的才是真正理解了,即使是参考他人的也有收获理解了tarjian算法让自己对算法有了好感,感觉算法真的好强,解决看起来不能解决的问题,那是一种超越#include <iostream>#include <cstdio>#include <vector>#include <stack>#include <algorithm>using namespace std;#define MAXVER 10010vector<int> g[MAXVER];stack<int> st 阅读全文
posted @ 2012-03-29 16:09 shijiwomen 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 本题主要是题意的理解,背景要看规则。模拟的时候一定要注意if判断的顺序,从整体到分支,提高速度#include <stdio.h>int main(){ int n,m,as,ds,i,sum; scanf("%d",&n); while(n--) { scanf("%d%d%d",&m,&as,&ds); sum=0; if(as>ds) { printf("Yes\n"); } else { if(m==0) { printf("No\n"); } else i 阅读全文
posted @ 2012-03-29 10:13 shijiwomen 阅读(319) 评论(0) 推荐(0) 编辑
摘要: dp主要是找到状态方程,大多运用双层循环,进行整体最优解的积累,像数塔,时间安排比较困难的就需要循环加条件判断比较,还有比较需要熟悉的是一般都是先从后往前递归出方程,在进行递推编码#include <stdio.h>int main(){ int i,j; int n,c,t; int vt,v1,v2; int len; int p[102]; double e,min,dp[102]={0}; while(scanf("%d",&len)!=EOF) { scanf("%d%d%d",&n,&c,&t); 阅读全文
posted @ 2012-03-28 22:31 shijiwomen 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 主要是剪枝:分为总体和枝节总体:sum%4!=0,max<sum/4枝节:在于dfs的参数设置和条件判断,动态的判断是否进行参考代码(参考牛人的):#include <stdio.h>#include <stdlib.h>#include <string.h>int a[25],vist[25],m,ave,flag;int cmp(const void *a,const void *b){ return (int *)b-(int *)a;}int dfs(int res,int sums,int cur){ int i; if(sums==ave) 阅读全文
posted @ 2012-03-28 21:14 shijiwomen 阅读(2904) 评论(0) 推荐(0) 编辑
摘要: 思想1:电脑就是一个有特性(很有耐心)的小孩,作为编程人员应该站在它的角度考虑问题,编程就是用一种特定的编程语言跟它交流。思想2:站在编程员得角度思考,数学是电脑的神经,数学思维是他的灵魂,数学知识是他的身体,知识是有体系的,他有自己独有的性质、属性、规律,编程人员就是用一种特定的编程语言依据他独有的知识、属性、规律进行有规律的不断的推理,直到到达目标,而这目标和知识以及他的一些性质都是由现实生活中一些实际问题,经过分块简化抽象,数学模型抽象而来。算法核心:回溯在现实生活中就是一种试探的尝试,例如,你很久以前去过一个地方,只很清楚记得目的地的一个特征(假设到时你能知道),现在你在一个十字路口, 阅读全文
posted @ 2011-03-26 18:26 shijiwomen 阅读(907) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8