2013年6月29日

poj1159 最大公共子串

摘要: 1 #include 2 #include 3 main() 4 { 5 int a[2][5003],n,len; 6 char s[5003]; 7 while(~scanf("%d",&n)) 8 { 9 scanf("%s",s);10 len=strlen(s);11 memset(a,0,sizeof(a));12 for(int i=1;ia[(i-1)%2][j]?a[i%2][j-1]:a[(i-1)%2][j];16 ... 阅读全文

posted @ 2013-06-29 19:55 dokc 阅读(264) 评论(0) 推荐(0) 编辑

poj2677 双调欧几里德旅行商问题

摘要: 1 int n,m,i,k,j,p; 2 main() 3 { 4 while(~scanf("%d",&n)) 5 { 6 double x[n+1],y[n+1],d[n+1][n+1],w[n+1][n+1]; 7 for(i=1;ij+1)d[i][j]=d[i-1][j]+w[i][i-1];15 if(i==j+1)16 {17 d[i][j]=d[j][1]+w[i][1];18 for(k=1;k<=i-2;k++)d... 阅读全文

posted @ 2013-06-29 19:51 dokc 阅读(185) 评论(0) 推荐(0) 编辑

矩阵链乘法 poj 1651 递归和迭代两种方法

摘要: 1 #define INF 0xffffff 2 int m[102][102],p[102],q,i,j,n,l; 3 int lookup(int i,int j) 4 { 5 int k; 6 if(m[i][j]<INF) return m[i][j]; 7 if(i==j)m[i][j]=0; 8 else 9 for(k=i;k<=j-1;k++)10 {11 q=lookup(i,k)+lookup(k+1,j)+p[i-1]*p[k]*p[j];12 if(q<m[i][j])m[i][j]=q;... 阅读全文

posted @ 2013-06-29 19:49 dokc 阅读(537) 评论(0) 推荐(0) 编辑

九度1341的三种做法 bellman-ford spfa-dfs spfa-bfs

摘要: 1 #include 2 #include 3 #include 4 #define INF 0xffffff 5 using namespace std; 6 int i,j,k,start,dest,dist[102],n,m,edge[102][102],v,pre[102]; 7 bool bellman_ford() 8 { 9 memset(pre,0,sizeof(pre));10 for(k=1;kedge[j][i]+dist[j])15 dist[i]=edge[j][i]+dist[j],pre[i]=j;16 }17 f... 阅读全文

posted @ 2013-06-29 19:21 dokc 阅读(179) 评论(0) 推荐(0) 编辑

poj1258

摘要: #include#define INF 0xffffffint n,m,i,j,k,min,cost[102][102],dist[102],pos,close[102],ans;main(){ while(~scanf("%d",&n)) { ans=0; for(i=1;idist[i]&&!close[i])min=dist[i],pos=i; ans+=dist[pos]; dist[pos]=0,close[pos]=1; for(i=1;i<=n;i++) ... 阅读全文

posted @ 2013-06-29 19:16 dokc 阅读(335) 评论(0) 推荐(0) 编辑

2013年2月27日

堆排序

摘要: #include<stdio.h>int n,k,len;void HeapAdjust(int a[],int s,int m){ int j; int e=a[s]; for(j=2*s;j<=m;j*=2) { if(j<m&&a[j]<a[j])++j; if(e>=a[j])break; a[s]=a[j]; s=j; } a[s]=e;}void HeapSort(int a[]){ int i,e; for(i=len/2;i>0;i--) HeapAd... 阅读全文

posted @ 2013-02-27 16:34 dokc 阅读(159) 评论(0) 推荐(0) 编辑

快速排序

摘要: int a[1000];void qs(int low,int high){ int l=low,h=high,e=a[l]; while(l<h) { while(l<h&&a[h]>=e) h--; if(l<h) a[l++]=a[h]; while(l<h&&a[l]<=e) l++; if(l<h) a[h--]=a[l]; } a[l]=e; if(l-1>low) qs(low,l-1); if(h+1<high) qs(h+1,high);} 阅读全文

posted @ 2013-02-27 16:30 dokc 阅读(120) 评论(0) 推荐(0) 编辑

2012年12月19日

poj2262

摘要: #include<stdio.h>#include<math.h>bool isPrime(int n){ if(n==1)return 0; int d=(int)sqrt(n); for(int i=2;i<=d;i++) if(n%i==0)return 0; return 1;}main(){ int n; while(~scanf("%d",&n)&&n) { int i; for(i=3;i<n;i++) if(isPrime(i)&&isPrime(n... 阅读全文

posted @ 2012-12-19 21:04 dokc 阅读(159) 评论(0) 推荐(0) 编辑

POJ1503

摘要: #include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>using namespace std;int s[200];char a[150];int main(){ memset(s,0,sizeof(s)); memset(a,0,sizeof(a)); int k,i; while(cin.getline(a,150)) { if(strcmp(a,"0")==0) break; int l=strlen(a); k=0... 阅读全文

posted @ 2012-12-19 20:17 dokc 阅读(136) 评论(0) 推荐(0) 编辑

POJ3006

摘要: #include<stdio.h>#include<math.h>bool isPrime(int n){ if(n==1)return 0; int d=(int)sqrt(n); for(int i=2;i<=d;i++) if(n%i==0)return 0; return 1;}main(){ int a,b,n; while(~scanf("%d%d%d",&a,&b,&n)) { if(!a&&!b&&!n)break; int i=0,j=0; for... 阅读全文

posted @ 2012-12-19 20:11 dokc 阅读(152) 评论(0) 推荐(0) 编辑

导航