您的位置:首页 > 其它

NOIP2014 提高组 复赛 day1 rps 生活大爆炸版石头剪刀布

2016-12-31 07:53 507 查看
NOIP2014 提高组 复赛 day1 rps 生活大爆炸版石头剪刀布

1.题目很快看懂,开一个二维数组(存储二维表信息),赢1,平0,输-1。得分根据结果再处理。

2.周期可以用%很快搞定。

3.题目展示数据量不大,结果开个300*300的数组即可,a,b各开300。

4.为了检查方便,对结果数据一个一个进行初始化,虽然代码敲了些时间,但是检查起来挺方便的。

5.编程时间与调试时间差不多,有一个地方有所疏忽:r[a[i]][b[j]];写成r[i][j],调了会。两个样例通过后,提交AC。

耗时:30分钟

难度:简单
附上AC代码,编译环境Dev-C++4.9.9.2

//2014 rps

#include <stdio.h>

#include <string.h>

int r[300][300];

int a[300],b[300];

int main(){

    int i,j,k;

    int ans_a=0,ans_b=0;

    int n,na,nb;

    memset(r,0,sizeof(r));

    memset(a,0,sizeof(a));

    memset(b,0,sizeof(b));

    r[0][1]=-1;

    r[1][0]=1;

    r[0][2]=1;

    r[2][0]=-1;

    r[0][3]=1;

    r[3][0]=-1;

    r[0][4]=-1;

    r[4][0]=1;

    r[1][2]=-1;

    r[2][1]=1;

    r[1][3]=1;

    r[3][1]=-1;

    r[1][4]=-1;

    r[4][1]=1;

    r[2][3]=-1;

    r[3][2]=1;

    r[2][4]=1;

    r[4][2]=-1;

    r[3][4]=1;

    r[4][3]=-1;

    scanf("%d%d%d",&n,&na,&nb);

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

        scanf("%d",&a[i]);

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

        scanf("%d",&b[i]);

    for(k=0;k<n;k++){

        i=k%na;

        j=k%nb;

        if(r[a[i]][b[j]]==1)

            ans_a++;

        else if(r[a[i]][b[j]]==-1)

            ans_b++;   

    }

    printf("%d %d\n",ans_a,ans_b);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: