ACM题目整理

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目来源:福州大学acm网站

代码:fpcdq

一、入门

熟悉ACM竞赛规则以及程序提交注意事项

例题:

Problem 1000 A+B Problem

Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description

Calculate a + b.

Input

The input will consist of a series of pairs of integers a and b,separated by a space, one pair of integers per line.

Output

For each pair of input integers a and b you should output the sum of a and b in one line,and with one line of output for each line in input.

Sample Input

1 5

2 3

Sample Output

6

5

My answer:

#include

main()

{

long a,b;

while((scanf("%ld%ld",&a,&b))!=EOF)

{

printf("%ld\n",a+b);

}

}

详情参考/faq.php

二、ACM分类

主流算法:

1.搜索//回溯

Problem 1019 猫捉老鼠

Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description

一只猫和一只老鼠在10*10的迷宫中。迷宫中的每个方格可以是空的,或者含有障碍。猫和老鼠可以进入任意一个空的方格中。当他们相遇时,猫和老鼠在同一个方格中。但是,无论猫或老鼠都不能进入有障碍的方格。我们可以用字符组成的二维数组表示迷宫,如下图所示。

老鼠在迷宫中按照一种固定的方式行走:每个时刻,老鼠都向它所面对的方向前进一格,这需要花费1秒时间。如果前方是一个障碍或者是迷宫的边界,它将花1秒的时间按顺时针方向转90度。

为了抓到老鼠,这只猫决定也按照与老鼠相同的行走方式行进。

猫和老鼠在每个单位时间内是同时行动的。因此,如果猫和老鼠在行进过程中“擦肩而过”,猫是无法捉到老鼠的。只有当猫和老鼠同时到达一个相同的格子时,猫才能捉住老鼠。

初始时,猫和老鼠不会在同一个方格中。并且它们都面向北方。

你的任务是编一个程序,求出猫捉到老鼠的所花时间。

Input

输入数据的第一行n,表示输入数据的组数。

每组数据由10行组成,每行10个字符,表示迷宫的地图以及猫和老鼠的初始位置。输入数据保证只有一只猫和一只老鼠。

每组输入数据之后均有一个空行作为间隔。

Output

对于每组给定的输入,输出一行仅含一个数,即猫捉到老鼠所花的时间。如果猫永远都无法抓到老鼠,则输出0。

Sample Input

1

*...*.....

......*...

...*...*..

..........

...*.c....

*.....*...

...*......

..m......*

...*.*....

.*.*......

Sample Output

49

My answer:

#include

char str[12][12];

void doing(int *fs,int *x,int *y)

{

if(*fs==1)

{

if(str[*x-1][*y]=='*') *fs=4;

else *x=*x-1;

}

else if(*fs==2)

{

if(str[*x+1][*y]=='*') *fs=3;

else *x=*x+1;

}

else if(*fs==3)

{

if(str[*x][*y-1]=='*') *fs=1;

else *y=*y-1;

}

else

{

if(str[*x][*y+1]=='*') *fs=2;

else *y=*y+1;

}

}

main()

{

int i,j,k,n,p,fs1,fs2,x1,y1,x2,y2;

scanf("%d",&n);

getchar();

for(i=0;i<=11;i++)

{

str[i][0]='*';str[i][11]='*';

str[0][i]='*';str[11][i]='*';

}

for(i=1;i<=n;i++)

{

fs1=1;fs2=1;p=1;

for(j=1;j<=10;j++)

{

for(k=1;k<=10;k++)

{

scanf("%c",&str[j][k]);

if(str[j][k]=='c')

{

x1=j;y1=k;str[j][k]='.';

}

if(str[j][k]=='m')

{

x2=j;y2=k;str[j][k]='.';

}

}

getchar();

}

for(j=1;j<10000;j++)

{

doing(&fs1,&x1,&y1);

doing(&fs2,&x2,&y2);

if(x1==x2&&y1==y2)

{

printf("%d\n",j);p=0;break;

}

}

if(p)printf("0\n");

if(i

}

}

相关文档
最新文档