- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
exercise1_ACM
第一次作业
1、平面分割方法
设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数。
输入示例:
3
输出示例:
8
要求:
用两种方法:
得到第n项与其之前已知项之间的关系,程序用递归实现
得到第n项的通项公式,程序直接实现。
解:
每增加一条封闭曲线该曲线就会与之前的每条曲线产生两个交点,所以会增加2(n-1)个交点。
递归关系:f(n)=f(n-1)+2(n-1)(增加几个交点就增加几个平面),f(1)=2
通项公式:f(n)=n(n-1)+2
//(1)
//平面分割方法
int countArea(int n)//递归法
{
if(n==1)
return 2;
else
return countArea(n-1)+2*(n-1);
}
//通项公式法an=2+n(n-1)
int countArea2(int n)
{
return 2+n*(n-1);
}
2、LELE的RPG难题
有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.
输入示例:3
输出示例:6
解:递归分析:从f(n-1)增加到f(n)分两种情况:(1)一种是直接在所有已经排好了的f(n-1)序列中插入唯一一个第三色有f(n-1)种;(2)另外是在已经排好了的f(n-2)序列中,插入与缝隙两边其中一个颜色相同的颜色,然后再插入第n个颜色且只需与第n-1种颜色不同有两种,故有2f(n-2)种;
递归关系:f(n)=f(n-1)+2f(n-2),(n=2)
//(2)LELE的RPG难题
int countColor(int n)
{
if(n==2)
return 6;
else if(n==3)
return 6;
else
return countColor(n-1)+*countColor(n-2);
}
假设一个有序数组A[0], A[1], …, A[N-1],编写一个函数int find(int A[], int x),确定一个整数x是否在数组A中,如果在,则返回其位置,否则返回-1
//有序数组元素查找-二分查找
int find(int A[],int n)
{//sizeof(A)sizeof写进函数得不到数组所占的内存数,而仅是一个指针的内存大小
int length=0;//参数数组长度
for(int i=0;A[i]!=0;i++)
{
length++;
}
int left=0,mid,right=length-1;
while(left=right)
{
mid=(left+right)/2;
if(nA[mid])
right=mid-1;
else if(nA[mid])
{
left=mid+1;
}
else
return mid;
}
return -1;}
4、假设数组a中的元素是按从小到大顺序排列的,函数find(int a[], int n, int i, int j, int x)利用二分有哪些信誉好的足球投注网站法确定x是否在含有n个元素的数组a中,如果不在,则参数i为小于x的最大元素的下标,参数j为大于x的最小元素的下标。如果x在数组a中,则i与j相等,都为等于x的元素的下标。
//(4)二分查找定位
void find2(int a[],int n,int i,int j,int x)
{
int left=0,mid,right=n-1;
while(left=right)
{
mid=(left+right)/2;
if(xa[mid])
left=mid+1;
else if(xa[mid])
right=mid-1;
else
{
//找到了
i=j=mid;
return;
}
}
//没找到
i=right;
j=left;
}
5、百鸡问题:有一个人有一百块钱,打算买一百只鸡。到市场一看,公鸡三块钱一只,母鸡两块钱一个,小鸡一块钱三只。现在,请你编一程序,帮他计划一下,怎么样买法,才能刚好用一百块钱买一百只鸡?
//(5)百鸡问题-枚举法
void countChicken()
{
int i,j;double k;//公鸡、母鸡、小鸡
for(i=0;i=33;i++)
for(j=0;j=50;j++)
for(k=0;k=300;k++)
if(3*i+2*j+k/3
您可能关注的文档
最近下载
- 初中语文人教八年级上册(统编2023年更新)句子成分划分 教案.docx VIP
- Spark大数据技术实战教程全套教学课件.pptx
- 2024.3.25-深基坑土方开挖专家论证版施工方案,附计算书!115页Word可下载!.docx
- 不同意调岗解除劳动合同通知书.docx VIP
- 《为家乡写人物(风物)“志”》课件--统编版高中语文必修上册.pptx
- 整本书阅读优质课《格林童话》导读课课件.pptx VIP
- 【精品】金融工程第七版课后习题答案(中文.pdf
- 2024年秋人教版七年级英语上册全册课件:Unit 3.pptx VIP
- 圆管涵结构计算-新规范.xls VIP
- 典型作业风险辨识防范手册(变电分册).pdf
文档评论(0)