ImageVerifierCode 换一换
格式:DOCX , 页数:52 ,大小:37.26KB ,
资源ID:20462898      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20462898.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ACM程序设计竞赛例题文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ACM程序设计竞赛例题文档格式.docx

1、 else am=0; /不选第m件物品 search(m+1); /递归搜索下一件物品 am=1; void checkmax() int i, weight=0, value=0; for(i=0;in;i+) if(ai=1) /如果选取了该物品 weight = weight + wi; /累加重量 value = value + vi; /累加价值 if(weightmax) /且价值大于max max=value; /替换maxvoid readdata() int i; scanf(%d%d,&wi,&vi); /读入第i件物品重量和价值void printresult() pr

2、intf(%d,max);2 装载问题有两艘船,载重量分别是c1、 c2,n个集装箱,重量是wi (i=1n),且所有集装箱的总重量不超过c1+c2。确定是否有可能将所有集装箱全部装入两艘船。提示:求出不超过c1的最大值max,若总重量max /打印结果int canplace(int,int); /判断该位置能否放置皇后void place(int,int); /在该位置能否放置皇后void takeout(int,int); /把该位置放置皇后去掉int a8; /ai存放第i个皇后的位置=8) /当已经找出一组解时 printresult(); /输出当前结果 for(i=0;8;i+)

3、 /对当前行0到7列的每一个位置 if(canplace(m,i) /判断第m个格子是否能放堡垒 place(m,i); /在(m,i)格子上放置一个皇后 search(m+1); /递归搜索下一行 takeout(m,i); /把(m,i)格子上的皇后去掉 int canplace(int row, int col)row; if(abs(i-row)=abs(ai-col)|ai=col) return(0); return(1);void place(int row, int col) arow=col;void takeout(int row, int col) arow=-1; in

4、t i,j; for(j=0;j=0&rowcolarowcol=0) return 1; return 0;1. Floodfill20的迷宫和一个起点坐标,用广度优先搜索填充所有的可到达的格子。参考第2题。2. 电子老鼠闯迷宫如下图1212方格图,找出一条自入口(2,9)到出口(11,8)的最短路本题给出完整的程序和一组测试数据。状态:老鼠所在的行、列。#includeint search(); /广搜,并在每一个可到达的每一个空格出填上最小步数int emptyopen(); /判栈是否为空:空:1;非空:0。int takeoutofopen(); /从栈中取出一个元素,并把该元素从栈

5、中删除int canmoveto(int,int,int*,int*,int); /判能否移动到该方向,并带回坐标(r,c)int isaim(int row, int col); /判断该点是否是目标int used(int,int); /判断该点是否已经走过void addtoopen(int,int); /把该点加入到open表int a1212; /a存放迷宫,0表示空格,-2表示墙。 /广搜时,未找到目标以前到达的空格,填上到达该点的最小步数int n; /n为迷宫边长,注:若大于12,必须修改一些参数,如a的大小int open20,head,tail,openlen=20; /o

6、pen表 /起点和终点 int number; /读取数据 number=search(); /广搜并返回最小步数,number);int search() int u, row, col, r, c, i, num; while(!emptyopen() /当栈非空 u=takeoutofopen(); row=u/n; /计算该点的坐标 col=u%n; num=arowcol; /取得该点的步数4; if(canmoveto(row,col,&r,&c,i) /判能否移动到该方向,并带回坐标(r,c) if(isaim(r,c) /如果是目标结点 return(num+1); /返回最小

7、步数 if(!used(r,c) /如果(r,c)还未到达过 arc=num+1; /记录该点的最小步数 addtoopen(r,c); int emptyopen() if(head=tail) return(1); return(0);int takeoutofopen() int u;errer: stack is empty return(-1); u=openhead+; head=head%openlen; return(u);int canmoveto(int row, int col, int *p, int *q, int direction) switch(directio

8、n) case 0: c-; break; case 1: r+; case 2: c+; case 3: r-; *p=r; *q=c; if(r=n|c=n) /如果越界返回0 if(arc=0) /如果是空格返回1 return(0); /其余情况返回0int isaim(int row, int col) if(row*n+col=t)int used(int row, int col) if(arowcol=0) / 0表示空格void addtoopen(int row, int col) u=row*n+col; opentail+= u; tail=tail%openlen;

9、int i,j,row,col; char str20; scanf(n);row,&col); /起点坐标 s=row*n+col; /终点坐标 t=row*n+col; gets(str); gets(str); if(strj=.) aij=0; /0表示空格 aij=-2; /2表示墙 head=0; tail=1; open0=s;测试数据如下:12 10 7 1 8XXXXXXXXXXXXX.X.XXXX.X.XX.XX.X.XX.XXX.XX.X.X.XX.XXXXXXXXXXX.X.X.XX.XXX.XXXXX.X.XXXX.XXXX.X.XXXXXXXX.XXX注:测试数据可

10、在运行时粘贴上去(点击窗口最左上角按钮,在菜单中选则“编辑”/“粘贴”即可)。想一想:此程序都存在哪些问题,如果openlen太小程序会不会出错,加入代码使程序能自动报出此类错误。3. 跳马给一个200200的棋盘,问国际象棋的马从给定的起点到给定的终点最少需要几步。Sample Input 0 0 1 1 Sample output 4 状态:马所在的行、列。 /广度优先搜索long takeoutofopen();int a200200,n=200; /a存放棋盘,n为迷宫边长long open2000,head,tail,openlen=2000; /open表1367long s,t;

11、 long u; int row, col, r, c, i, num; /计算该点所在的行 /计算该点所在的列 return -1;int main() /为了让search()显示在一页内和main函数换了以下 /一般的算法程序main函数写在最上面读起来更方便long takeoutofopen() if(arowcol=0) if(head-tail)%openlen=1)open table overflow u=row; u=u*n+col; long row,col;%ld%ld思考:参考第4题,改为用结构体表示状态写此程序。4. 独轮车独轮车的轮子上有5种颜色,每走一格颜色变化一次,独轮车只能往前推,也可以在原地旋转,每走一格,需要一个单位的时间

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1