计算机学院ACM程序设计竞赛题目Word格式.docx

上传人:b****4 文档编号:7738799 上传时间:2023-05-09 格式:DOCX 页数:20 大小:20.37KB
下载 相关 举报
计算机学院ACM程序设计竞赛题目Word格式.docx_第1页
第1页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第2页
第2页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第3页
第3页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第4页
第4页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第5页
第5页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第6页
第6页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第7页
第7页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第8页
第8页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第9页
第9页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第10页
第10页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第11页
第11页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第12页
第12页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第13页
第13页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第14页
第14页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第15页
第15页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第16页
第16页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第17页
第17页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第18页
第18页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第19页
第19页 / 共20页
计算机学院ACM程序设计竞赛题目Word格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机学院ACM程序设计竞赛题目Word格式.docx

《计算机学院ACM程序设计竞赛题目Word格式.docx》由会员分享,可在线阅读,更多相关《计算机学院ACM程序设计竞赛题目Word格式.docx(20页珍藏版)》请在冰点文库上搜索。

计算机学院ACM程序设计竞赛题目Word格式.docx

题目三 

A+B

读入两个小于100的正整数A和B,计算A+B。

需要注意的是:

A和B的每一位数字由对应的英文单词给出。

测试输入包含若干测试用例,每个测试用例占一行,格式为"

A+B="

,相邻两字符串有一个空格间隔。

当A和B同时为0时输入结束,相应的结果不要输出。

对每个测试用例输出1行,即A+B的值。

one+two=

threefour+fivesix=

zeroseven+eightnine=

zero+zero=

90

96

题目四 

百岛湖

相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。

现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!

经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2个小岛之间的距离不能小于10米,也不能大于1000米。

当然,为了节省资金,只要求实现任意2个小岛之间有路通即可。

其中桥的价格为100元/米。

输入包括多组数据。

输入首先包括一个整数T(T<

=200),代表有T组数据。

每组数据首先是一个整数C(C<

=100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是0<

=x,y<

=1000的整数。

每组输入数据输出一行,代表建桥的最小花费,结果保留一位小数。

如果无法实现工程以达到全部畅通,输出”oh!

”。

2

1010

2020

11

22

10001000

1414.2

oh!

题目五 

Howmanyways?

?

春天到了,校园里开满了花,姹紫嫣红,非常美丽。

葱头是个爱花的人,看着校花校草竞相开放,漫步校园,心情也变得舒畅。

为了多看看这迷人的校园,葱头决定,每次上课都走不同的路线去教室,但是由于时间问题,每次只能经过k个地方,比方说,这次葱头决定经过2个地方,那他可以先去明德广场看看喷泉,再去教室,也可以先到体育场跑几圈,再到教室。

他非常想知道,从A点恰好经过k个点到达B点的方案数,当然这个数有可能非常大,所以你只要输出它模上1000的余数就可以了。

你能帮帮他么?

你可决定了葱头一天能看多少校花哦。

输入数据有多组,每组的第一行是2个整数n,m(0<

n<

=20,m<

=100)表示校园内共有n个点,为了方便起见,点从0到n-1编号,接着有m行,每行有两个整数s,t(0<

=s,t<

n)表示从s点能到t点,注意图是有向的。

接着的一行是整数T,表示有T组询问(1<

=T<

=100),接下来的T行,每行有三个整数A,B,k,表示问你从A点到B点恰好经过k个点的方案数(k<

20),可以走重复边。

如果不存在这样的走法,则输出0。

当n,m都为0的时候输入结束。

计算每次询问的方案数,由于走法很多,输出其对1000取模的结果。

44

01

02

13

23

032

033

36

10

20

12

21

121

013

00 

参考答案代码

B

Problem 

Description

="

Sample 

one 

two 

=

three 

four 

five 

six 

zero 

seven 

eight 

nine 

*/

#include 

<

stdio.h>

stdlib.h>

string.h>

struct 

InPutString

{

char 

Value[100];

//每次输入的计算字符串

InPutString 

Next;

//指向下一个结构体的地址

};

int 

WordsToInt(char 

Value)//单个单词转换为整数值

{

if 

(strcmp("

one"

 

Value) 

== 

0)

return 

1;

else 

two"

2;

three"

3;

four"

4;

five"

5;

six"

6;

seven"

7;

eight"

8;

nine"

9;

zero"

0;

}

CharsToInt(char 

Value)//整体字符串转换为整数值

ReturnValue 

i, 

Pos0 

LeftNum[10] 

{'

\0'

RightNum[10] 

for(i 

100;

i++)

(Value[i] 

'

)//寻找空格的位置

i;

break;

(Pos0 

>

0)//找到表明是两位数

strncpy(LeftNum, 

Value, 

Pos0);

strncpy(RightNum, 

Value 

1, 

strlen(Value) 

1);

WordsToInt(LeftNum) 

10 

WordsToInt(RightNum);

else//是一位数

strcpy(LeftNum, 

Value);

WordsToInt(strcpy(LeftNum, 

Value));

ReturnValue;

SumValue(char 

Value)//计算机字符串的值

LeftValue[100] 

//运算式左侧

RightValue[100] 

//运算式右侧

Pos0, 

Pos1 

+'

)//寻找 

号的位置

='

strncpy(LeftValue, 

//获取 

左边的字符串

strncpy(RightValue, 

2, 

3);

//获取 

右边 

与 

左边 

的字符串

CharsToInt(LeftValue) 

CharsToInt(RightValue);

main(int 

argc, 

char* 

argv[])

pHeadInPutString 

NULL;

//首指针

pUsedInPutString 

//正在使用的指针

pTempInPutString 

//临时使用的指针

InPut[100];

//输入数据

gets(InPut);

while(strcmp(InPut, 

"

) 

!

0)//表明输入数据有效

(InPutString 

*)malloc(sizeof(InPutString));

//申请空间

pTempInPutString->

Next 

strcpy(pTempInPutString->

InPut);

(NULL 

pHeadInPutString)//头指针没有创建 

则新建的是头指针

pTempInPutString;

pHeadInPutString;

else//头指针已经创建 

则建立的数据放在尾部

pUsedInPutString->

//计算数据

//输出数据

while(NULL 

pUsedInPutString)

printf("

%d\n"

SumValue(pUsedInPutString->

pUsedInPutString;

free(pTempInPutString);

位数对调:

输入一个三位自然数,把这个数的百位与个位数对调,输出对

调后的数。

例如:

Input 

bit 

natrue 

data:

234

n=432

要求每次输入多组数据(与ACM竞赛类似),输入0时表示输入结束如:

输入为:

123

456

789

输出应该为:

321

654

987

[解]1.先确定输入数n 

是否三位数,即n>

99 

且n<

=999。

2.位数对调:

n=abc→cba=x

①百位数a=n整除100;

②十位数b=(n-a*100)整除10;

③个位数c=n 

除以10的余数;

3.得对调后的数:

x=c*100+b*10+a

NumberNode//结构体 

NumberValue;

//输入的数值

NumberNode 

// 在解决复杂问题时 可以采用分函数 将问题化简分步求解。

故建立分函数CalcNumber进行百个位互换

CalcNumber(int 

Number)//对三位数进行位调

//return 

(Number 

10) 

100 

((Number 

100)*100) 

100);

InNumber 

pNumber 

//链表头指针

pTempNumber 

//用来表示当前指针位置的链表指针

//采用链表输入数据

scanf("

%d"

&

InNumber);

while((InNumber 

0)&

&

(InNumber 

999)&

100))

pTemp;

//链表临时指针 

指向当前创建的结构体的地址

pTemp 

(NumberNode 

*)malloc(sizeof(NumberNode));

pTemp->

NumberValue 

InNumber;

(pNumber 

NULL)

{//头指针为空,则将新建立的链表做为头指针

pNumber;

else//若不为空,则将新建立的结构体地址加入到链表的尾部 

{// 

注意赋值的先后性 

是指向链表当前位置的指针

pTempNumber->

//对结果运算并输出

while(pNumber 

CalcNumber(pNumber->

NumberValue));

pNumber->

free(pTempNumber);

//释放申请的空间 

此句不能掉 

否则会造成内存泄露

}

n为信阳市的人数,m为需要找出的大富翁数,接下来一行输入市内n个人的财富值。

-1

Moneybags//富翁的结构体 

Value;

//富翁的金钱数

Moneybags 

//指向下一个富翁结构体的地址

GroupData//每组测试用例的结构体 

MoneybagsNumber;

//输入的富翁数总个数n

CountMoneybagsNumber;

//需要输出的前m个大富翁的数值m

MoneybagsLinks;

//指向当前的第一个富翁

GroupData 

NextGroupData;

//指向下一组数据

void 

SortData(GroupData 

pHeadGroup)//对数据进行排序

pGroup 

//当时使用的组数据指针

pMoneybagsTemp0 

//临时使用的富翁数据指针

pMoneybagsTemp1 

//临时使用的富翁数据指针

pHeadGroup;

j, 

MaxValue 

while(pGroup 

NULL)//数据组的循环

pGroup->

pMoneybagsTemp0)//冒泡排序的循环此处使用冒泡排序

pMoneybagsTemp0->

pMoneybagsTemp1)

(MaxValue 

pMoneybagsTemp1->

Value)

MaxValue;

j++;

PrintData(GroupData 

pHeadGroup)//对数据进行输出

pGroupTemp 

//临时使用的组数据指针

//当时使用的组数据指针

pMoneybagsTemp0)

(j 

i) 

%d 

pMoneybagsTemp0;

free(pMoneybagsTemp1);

\n"

);

pGroup;

free(pGroupTemp);

//释放申请的空间

//输入的富翁个数n的临时变量

//需要输出的富翁个数m的临时变量

pHeadGroup 

//组数据的头指针

n);

m);

while((0 

n)&

(0 

m))//n,m都不为0时

pGroupTemp;

(GroupData 

*)malloc(sizeof(GroupData));

//赋初值

pGroupTemp->

MoneybagsNumber 

n;

CountMoneybagsNumber 

m;

NextGroupData 

MoneybagsLinks 

pHeadGroup)//头指针没有创建 

MoneyValue 

pMoneybags 

//当前正在使用的富翁数据指针

pM

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2