1. 程式人生 > >2017 計蒜之道 初賽 第一場 A.阿里的新遊戲

2017 計蒜之道 初賽 第一場 A.阿里的新遊戲

題目背景是成三棋,題目要求是輸入小紅和小明的棋子位置,用座標表示(棋盤的座標系建在原點中心,橫縱座標都是從-3到3),然後輸出小紅的成三數(這個線段上有三個小紅的棋子)。 題目描述很簡單,但是我花了一個小時才AC,而且用的是最笨的方法,枚舉了16種可能的情況,正解肯定不會是這個,但好在還是AC了... 這也是我第一次做這種線上賽,發現自己的實力還是很弱,我清楚的記得比賽開始10分鐘,已經有接近50人AC,而當時我還在思考。所以說,人與人之間的差距還是特別的大。 記錄這道題的原因,或許就因為這是我第一次的線上賽吧,而且還是真真正正自己獨立完成的題目,儘管特別簡單,可能是因為平時我遇到不會的題目,喜歡看其他人的題解,導致自己遇到問題時,獨立解決的能力還是很弱。 希望自己以後多些獨立思考的時間,少看題解...   Orz 另外附上我的超長程式碼(可能是我提交過最長的程式碼了,判斷條件冗長)
#include <stdio.h>
char map[7][8];

int main()
{
    int n,m;
    int i,j;
    int cnt=0;
    int ans=0;
    scanf("%d %d",&n,&m);
    for(i=0;i<7;++i)
        for(j=0;j<7;++j)
        map[i][j]='#';
    for(i=0;i<n;++i)
    {
        int a,b;
        scanf("%d %d",&a,&b); //座標系與char陣列的轉換
        int x=a;
        int y=b;
        if(x==3)
            b=6;
        else if(x==2)
            b=5;
        else if(x==1)
            b=4;
        else if(x==0)
            b=3;
        else if(x==-1)
            b=2;
        else if(x==-2)
            b=1;
        else if(x==-3)
            b=0;

        if(y==3)
            a=0;
        else if(y==2)
            a=1;
        else if(y==1)
            a=2;
        else if(y==0)
            a=3;
        else if(y==-1)
            a=4;
        else if(y==-2)
            a=5;
        else if(y==-3)
            a=6;
        map[a][b]='@';
    }
    for(i=0;i<m;++i)
    {
        int c,d;
        scanf("%d %d",&c,&d);
    }
    for(j=0;j<7;++j)
    {
        if(map[0][j]=='@')   //列舉16種情況
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(j=0;j<7;++j)
    {
        if(map[6][j]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(i=0;i<7;++i)
    {
        if(map[i][0]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(i=0;i<7;++i)
    {
        if(map[i][6]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(j=1;j<=5;++j)
    {
        if(map[1][j]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(j=1;j<=5;++j)
    {
         if(map[5][j]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(i=1;i<=5;++i)
    {
        if(map[i][1]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(i=1;i<=5;++i)
    {
          if(map[i][5]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(j=2;j<=4;++j)
    {
        if(map[2][j]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(j=2;j<=4;++j)
    {
        if(map[4][j]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(i=2;i<=4;++i)
    {
        if(map[i][2]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(i=2;i<=4;++i)
    {
        if(map[i][4]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(j=0;j<=2;++j)
    {
        if(map[3][j]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(j=4;j<=6;++j)
    {
        if(map[3][j]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(i=0;i<=2;++i)
    {
        if(map[i][3]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    for(i=4;i<=6;++i)
    {
        if(map[i][3]=='@')
            cnt++;
    }
    if(cnt==3)
        ans++;
    cnt=0;
    printf("%d\n",ans);
    return 0;
}
另外再附上我WA N次的記錄...