ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:322.13KB ,
资源ID:9496548      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(中南大学算法设计与分析实验报告.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

中南大学算法设计与分析实验报告.doc

1、姓名: 学号: 0909122824 班级: 信安1202 指导老师: 李敏 算法设计与分析基础 ——实验报告 实验一 分治 —最近点对 一. 问题 Problem

2、 Have you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some toys, with all the toys encircled awarded. In the field of Cyberground, the position of each toy is fixed, and the ring is carefully designed so it can only encircle one toy at a time. On the other

3、 hand, to make the game look more attractive, the ring is designed to have the largest radius. Given a configuration of the field, you are supposed to find the radius of such a ring. Assume that all the toys are points on a plane. A point is encircled by the ring if the distance between the point a

4、nd the center of the ring is strictly less than the radius of the ring. If two toys are placed at the same point, the radius of the ring is considered to be 0. Input The input consists of several test cases. For each case, the first line contains an integer N (2 <= N <= 100,000), the total numbe

5、r of toys in the field. Then N lines follow, each contains a pair of (x, y) which are the coordinates of a toy. The input is terminated by N = 0. Output For each test case, print in one line the radius of the ring required by the Cyberground manager, accurate up to 2 decimal places. 二. 分析思路

6、 题目是给n个点的坐标,求距离最近的一对点之间距离的一半。第一行是一个数n表示有n个点,接下来n行是n个点的x坐标和y坐标。 首先,假设点是n个,编号为1到n。找一个中间的编号mid,先求出1到mid点的最近距离设为d1,还有mid+1到n的最近距离设为d2。如果说最近点对中的两点都在1-mid集合中,或者mid+1到n集合中,则d就是最小距离了。但是还有可能的是最近点对中的两点分属这两个集合,若存在,则把这个最近点对的距离记录下来,去更新d。这样就得到最小的距离d了。 三. 源代码 #include #include #incl

7、ude using namespace std; #define N 1000010 struct point { double x; double y; }p1[N],p2[N]; double dis ( point a , point b ) { return sqrt( pow (a.x-b.x,2) + pow ( a.y-b.y,2 ) ); } double min ( double a , double b ) { return a

8、int b ) { return a.x < b.x ; } bool cpy ( point a , point b ) { return a.y < b.y ; } double mindis ( int l , int r ) { if( l + 1 == r ) return dis ( p1[l] ,p1[r] ); if( l + 2 == r ) return min ( dis ( p1[l] , p1[l+1] ) , min ( dis ( p1[l+1] , p1[r] ) , dis ( p1[l] , p1[r] ) )

9、); else { int mid , count=0 ; double mini; mid = ( l + r) /2 ; mini = min ( mindis ( l , mid ) , mindis ( mid+1 , r ) ); for( int i = l ; i <= r ; i++ ) { if ( fabs ( p1[i].x - p1[mid].x ) <= mini ) p2[count++]=p1[i]; } sort ( p2 , p2+count , cpy ); for ( int

10、i=0 ; i < count ; i++ ) { for ( int j = i+1; j < count ;j++) { if ( p2[j].y-p2[i].y>=mini) break; else if(dis (p2[j],p2[i])

11、 { for(int i=0;i

12、h straight streets. A map of a city is a square board with n rows and n columns, each representing a street or a piece of wall. A blockhouse is a small castle that has four openings through which to shoot. The four openings are facing North, East, South, and West, respectively. There will be one m

13、achine gun shooting through each opening. Here we assume that a bullet is so powerful that it can run across any distance and destroy a blockhouse on its way. On the other hand, a wall is so strongly built that can stop the bullets. The goal is to place as many blockhouses in a city as possible

14、so that no two can destroy each other. A configuration of blockhouses is legal provided that no two blockhouses are on the same horizontal row or vertical column in a map unless there is at least one wall separating them. In this problem we will consider small square cities (at most 4x4) that contai

15、n walls through which bullets cannot run through. Input The input file contains one or more map descriptions, followed by a line containing the number 0 that signals the end of the file. Each map description begins with a line containing a positive integer n that is the size of the city; n will

16、 be at most 4. The next n lines each describe one row of the map, with a '.' indicating an open space and an uppercase 'X' indicating a wall. There are no spaces in the input file. Output For each test case, output one line containing the maximum number of blockhouses that can be placed in the

17、city in a legal configuration. 二.分析思路 对于每个点,若能放置大炮则能选择放或者不放两种情况,若不能放置大炮则就只有一种情况。直接搜索,回溯的时候把点的状态恢复. 三.源代码 #include #include #include #define MAX_SIZE 10 char map[MAX_SIZE][MAX_SIZE]; int d[4][2]={0,1,0,-1,1,0,-1,0}; int N,cnt; int ok(int x, int y)

18、{ if(map[x][y]!='.') return 0; int i,xx,yy; for(i=0;i<4;i++) { xx=x+d[i][0]; yy=y+d[i][1]; while(xx>=0 && xx=0 && yy

19、]; yy+=d[i][1]; } } return 1; } int search(int x, int y, int c) { int i,j; for(j=y;j

20、 for(j=0;jcnt) cnt=c; return 0; } int main() { int i; while(scanf("%d",&N)&&N) { for

21、i=0;i

22、这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。 为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中其中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼) Inp

23、ut 输入数据有多组。每组数据的第一行为以正整数n(0

24、[j-1],dp[i+1][j],dp[i+1][j-1])+pie[i][j]。pie[i][j]为时间i时在j位置掉的馅饼数目。 三.源代码 #include #include #include #define MAX 100001 int pie[MAX][12]; int Max(int a, int b){ return (a > b) ? a : b; } int Max(int a, int b, int c){ int max = (a>b) ? a:b;

25、 return (max>c) ? max:c; } int MaxNumOfPie(int max_time){ int i, j, max; for (i = max_time - 1; i >= 0; --i){ pie[i][0] = Max(pie[i+1][0], pie[i+1][1]) + pie[i][0]; for (j = 1; j < 10; ++j){ pie[i][j] = Max(pie[i+1][j-1], pie[i+1][j], pie[i+1][j+1]) + pie[i

26、][j]; } pie[i][10] = Max(pie[i+1][10], pie[i+1][9]) + pie[i][10]; } return pie[0][5]; } int main(){ int n,time,location; int max_time; while (scanf("%d",&n) != EOF && n != 0){ memset(pie, 0, sizeof(pie)); max_time = -1; for (int i=1; i<=n; ++i){ scanf ("%d%d", &location, &time); ++pie[time][location]; if (max_time < time) max_time = time; } printf ("%d\n", MaxNumOfPie(max_time)); } return 0; } 四.运行结果

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服