清华大学ACM集训队培训资料Word下载.docx
- 文档编号:14292547
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:16
- 大小:71.10KB
清华大学ACM集训队培训资料Word下载.docx
《清华大学ACM集训队培训资料Word下载.docx》由会员分享,可在线阅读,更多相关《清华大学ACM集训队培训资料Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
usingnamespacestd;
intmain(void)
{
cout<
<
"
HelloWrold!
endl;
return0;
运行结果
HelloWorld!
程序说明
第一行“#include<
”,是一句预处理命令,相当于把“iostream”这个文件的所有内容复制到当前位置,替换该行。
因为在输出操作中需要做很多事,C++编译器就提供了很多已经写好的函数(成为C++标准库),我们做的只是拿来用就可以了。
第二行的“usingnamespacestd;
”是使用标准命名空间,因为我们在程序中用到了在标准命名空间里的函数和对象。
目前可以不了解其具体如何实现,在以后的程序设计中可以再对其进行了解。
在明函数中“cout<
”HelloWorld!
”<
”是在屏幕上打印“HelloWorld!
eHeH”,“endl”表明打印完这句话之后需要换行。
如果我们替换引号内的内容,程序的输出就会相应改变。
另外一个C++程序例子
//ourfunc.cpp--definingyourownfunction
#include<
voidsimon(int);
//functionprototypeforsimon()
intmain()
usingnamespacestd;
simon(3);
//callthesimon()function
cout<
"
Pickaninteger:
;
intcount;
cin>
>
count;
simon(count);
//callitagain
Done!
<
endl;
voidsimon(intn)//definethesimon()function
Simonsaystouchyourtoes"
n<
times."
}//voidfunctionsdon'
tneedreturnstatements
下面试运行情况:
Simonsaystouchyourtoes3times.
512
Simonsaystouchyourtoes512times.
程序中包含了cin语句来从键盘上获取数据。
该程序中包含了除main函数以外的另一个函数simon(),他和main函数定义的格式相同,函数的统一格式如下:
typefunctionname(argumentlist)
statements
注意,定义simon()的代码在main()函数的后面,C++中不允许将函数定义在另一个函数内。
每个函数的定义都是独立的,所有的函数的创建都是平等的。
simon()函数的函数头定义如下:
voidsimon(intn)
以void开头表明simon()没有返回值,因此我们不能类是这样的使用它。
simple=simon(3);
有返回值的函数如下
//convert.cpp--convertsstonetopounds
intstonetolb(int);
//functionprototype
intstone;
Entertheweightinstone:
stone;
intpounds=stonetolb(stone);
stone<
stone="
pounds<
pounds."
intstonetolb(intsts)
return14*sts;
下面是运行情况:
Entertheweightinsone:
14
14stone=196pounds.
程序通过cin语句给stone提供一个值,然后在main函数中,把这个值传递给stonetolb()函数,这个植被赋给sts之后,stonetolb()用return 将14*sts返回给main()。
函数头中的int表明stonetolb()将返回一个整数。
除了int类型之外,C++的内置数据类型还有:
unsignedlong、long、unsignedint、unsignedshort、short、char、unsignedchar、signedchar、bool、 float、double、longdouble。
对于数据的输入和输出有几道练习题
至
二、算法基础
1.什么是算法
算法是完成特定任务的有限指令集。
所有的算法必须满足下面的标准:
a.输入。
由外部题共零个或多个输入量。
b.输出。
至少产生一个输出量。
c.明确性。
每条指令必须清楚,不具模糊性。
d.有限性。
如果跟踪算法的指令,那么对于所有的情况,算法经过有限步以后终止。
e.有效性。
每条指令必须非常基础,原则上使用笔和纸就可以实现
例选择排序
voidSelectionSort(Typea[],intn)
//Sortthearrata[1:
n]intonondecreasingorder.
for(inti=1;
i<
=n;
i++)
{
intj=1;
for(intk=i+1;
k<
k++)
if(a[k]<
a[j])
j=k;
Typet=a[i];
a[i]=a[j];
a[j]=t;
}
使用该函数时,应将Type替换为C++中的数据类型
3.性能分析
程序P所用时间定义为T(P),T(P)是编译时间和运行时间之和。
下面我们计算一下选择排序运行时所要花费的时间
SelectionSort
cost
times
c1
c2
c3
c4
c5
c6
那么该算法运行的时间
那么,在最坏的条件下,的值应该是
所以,算法的运行时间为
4.渐进符号
定义:
[大O]函数,念做是的大”oh”,当且仅当存在正常数和,使得对于所有的,有。
例
对于所有有,所以。
对于所有有,所以
当然对于所有有,所以
[Ω]函数,念做是的”omega”,当且仅当存在正常数和,使得对于所有的,有。
当然,但是。
现然无论是O还是Ω,都不能精确的描述一个函数
[Θ]函数,念做是的”theta”,当且仅当存在正常数和,使得对于所有的,有。
对于有且,所以
Θ记号要比O和Ω都要精确。
排列生成器Θ(n!
)
voidPerm(Typea[],intk,intn)
if(k==n){//Outputpermutation.
for(inti-1;
n;
i++)cout<
a[i]<
else//a[k:
n]hasmorethanonepermutation.
//Generatetheserecursively.
for(inti=k;
i++){
Typet=a[k];
a[k]=a[i];
a[i]=t;
Perm(a,k+1,n);
//Allpermutationsofa[k+1:
n]
t=a[k];
}
对于下面的程序
voidPerm(inta[],intk,intn)
if(k<
n-1)
inti,t;
for(i=k;
t=a[k];
a[k]=a[i];
a[i]=t;
Perm(a,k+1,n);
else
inti;
for(i=0;
cout<
'
\t'
inta[3]={1,2,3};
Perm(a,0,3);
return0;
该程序的运行结果为
123
132
213
231
321
312
那么,该函数就完成了对一个数组进行全排列的操作
下面,分析该程序,我用圆圈代表每次函数的调用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 清华大学 ACM 集训队 培训资料