05百度编程大赛.docVIP

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
05百度编程大赛

05百度编程大赛 二○○五年 百度大赛答案 1. #include stdio.h #include stdlib.h #include string.h const int hashsize=70001; const int maxnode=50000; const int maxp=40; const int ten[]={1,10,100,1000,10000,100000,1000000100000000}; const int C[]={2,3,2,3,4,3,2,3,2}; const int EP[][4]={{1,3,0,0},{0,2,4,0},{1,5,0,0},{0,4,6,0},{1,3,5,7},{2,4,8,0},{3,7,0,0},{4,6,8,0},{5,7,0,0}}; struct Tlist { int data,d; Tlist *next; }; struct Thashpoint { int data; Thashpoint *next; }; //Memory int ID; Tlist listM[maxnode],*q; Thashpoint hashM[maxnode],*p; //data int src,dest; //heap Tlist *head[maxp],*expand[maxp],*lp1,*lp2; //Hash Thashpoint *hash[hashsize]; //expand int nowp,A[9],arcT[9],dist[9][9],b,depth,swap[9][9]; int data,G,newdata,newG; bool find_answer; void readdata(const char *filename,int data) { int i,v; FILE *f=fopen(filename,r); data=0; for (i=0;i9;i++) { fscanf(f,%d,v); data=data+v*ten[i]; } fclose(f); } bool check_noanswer() { int p[9],i,b1,b2; bool vis[9]; for (i=0;i9;i++) p[i]=arcT[src/ten[i]%10]; for (b1=0; src/ten[b1]%10!=0;b1++); for (b2=0;dest/ten[b2]%10!=0;b2++); int countP=0; memset(vis,false,sizeof(vis)); for (i=0;i9;i++) if (!vis[i]) { countP++; for (int k=i;!vis[k];k=p[k]) vis[k]=true; } return (countP-dist[b1][b2])%2==0; } void preprocess() { ID=0; find_answer=false; memset(hash,0,sizeof(hash)); memset(head,0,sizeof(head)); memset(expand,0,sizeof(expand)); for (int k=0;k9;k++) arcT[dest/ten[k]%10]=k; for (int u=0;u9;u++) for (int v=0;v9;v++) { dist[u][v]=abs(u/3-v/3)+abs(u%3-v%3); swap[u][v]=ten[u]-ten[v]; } } void addnode() { if (newdata==dest) { printf(%d\n,depth); find_answer=true; return; } int address=newdata%hashsize; for (p=hash[address];p!=NULL;p=p-next) if (p-data==newdata) return; if (ID==maxnode) return; p=hashM[ID]; p-data=newdata; p-next=hash[address]; hash[address]=p; q=listM[ID]; ID++; q-data=newdata; q-d=depth; if (newG=maxp) return; if (newG==nowp) { q-n

您可能关注的文档

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档