摘要:
#include<stdio.h>#include<string.h>#define MAX 9999999#define N 205int map[N][N];int vis[N];int d[N];int start,end,n,m;//n个村庄,m条路径void init(){ memset(map,MAX,sizeof(map)); memset(vis,0,sizeof(vis)); memset(d,MAX,sizeof(d));}void dijkstra(int s,int e){ int i,k,j,min; vis[s]=1; for(i=0;i&l 阅读全文
摘要:
#include<stdio.h>#include<string.h>#define N 100+5#define MAX 9999int map[N][N];int d[N];int n,ans;void prim(){ int i,j,k,min; for(i=1;i<=n;i++) d[i]=map[1][i]; ans+=d[1]; d[1]=0;//进入最小生成树 for(i=1;i<=n;i++){ min=MAX; for(j=1;j<=n;j++){ if(min>d[j]&&d[j]!=0){ k=j; min= 阅读全文
摘要:
#include<stdio.h>int fmax(int i,int j){ return i>j?i:j;}int main(){ int s1,s2,s3,s4,s5,s6; int sum,tp,tp2; while(scanf("%d%d%d%d%d%d",&s1,&s2,&s3,&s4,&s5,&s6),s1+s2+s3+s4+s5+s6){ sum=0; sum+=s6;//6*6的箱子; //s6=0; sum+=s5;//5*5的箱子,剩下的用1*1来填充 //s5=0; s1=fmax(0 阅读全文
摘要:
详见(http://www.darkswordzone.com/?p=749)对于一个正整数n的划分,就是把n表示成一系列正整数的和,划分与次序无关。如一个正整数5,可以划分为:[5][4,1][3,2] [3,1,1][2,2,1] [2,1,1,1][1,1,1,1,1]将一个正整数n划分,共有多少种划分方式?上面的例子第一行,所有加数不超过5;第二行,所有加数不超过4;。。。。。。。第五行,所有加数不超过1.定义int fun(int n,int m)表示正整数n,所有加数不超过m的划分数目。那么1,n==1或m==1 时共有1种划分方式。2,n==m时 fun(n,m)=fun(n,m 阅读全文
摘要:
#include<stdio.h>#include<string.h>#define N 100000+5int step,mod,seed;int flag;int f[N];int main(){ int i,j,k; while(scanf("%d%d",&step,&mod)==2){ for(i=0;i<=mod-1;i++) f[i]=0; seed=0; do { seed=(seed+step)%mod; f[seed]=1; }while(seed!=0); flag=0; for(i=0;i<=mod- 阅读全文