zoukankan      html  css  js  c++  java
  • [CSP-S模拟测试]:五子棋(模拟)

    题目传送门(内部题122)


    输入格式

      输入文件第一行为一个正整数$n$,表示双方总共下了多少步棋。
      接下来$n$行,输入文件每行两个正整数。第$i$行的两个数$x,y$表示第$i$步的棋子下在了第$x$条横线和第$y$条竖线的交叉点上。若$i$为奇数,则这个棋子是黑棋,否则是白棋。


    输出格式

      若没有人获得胜利,你需要输出$"Tie"$(不含引号)。否则,若小$A$获胜,则输出$"A"$(不含引号),若小$B$获胜,输出$"B"$。当有人获胜时,你还需要输出一个正整数$w$,表示第$w$步下完后游戏应当结束,字母与整数间用一个空格隔开。


    样例

    样例输入:

    20
    5 5
    4 5
    5 6
    7 5
    6 7
    7 2
    4 3
    8 3
    6 6
    8 5
    6 4
    3 3
    8 7
    3 4
    6 5
    4 8
    6 3
    5 10
    5 9
    8 8

    样例输出:

    A 17


    数据范围与提示

      对于$100\%$的数据,满足$0leqslant nleqslant 225,1leqslant x,yleqslant 15$。


    题解

    模拟,没了……

    注意函数不要忘了返回值,$exit(0)$需要调库,我知道的就这么多了,要是有人还犯了其它低级错误可以找我加上。

    我感觉我的打法细节不是很多。

    时间复杂度:$Theta(n)$。

    期望得分:$100$分。

    实际得分:$100$分。


    代码时刻

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    int Map[20][20];
    int ans;
    bool judge(int x,int y)
    {
    	int res1=1,res2=1,res3=1,res4=1;
    	for(int i=1;;i++)if(Map[x+i][y]!=Map[x][y]){res1+=i-1;break;}
    	for(int i=1;;i++)if(Map[x-i][y]!=Map[x][y]){res1+=i-1;break;}
    	for(int i=1;;i++)if(Map[x][y+i]!=Map[x][y]){res2+=i-1;break;}
    	for(int i=1;;i++)if(Map[x][y-i]!=Map[x][y]){res2+=i-1;break;}
    	for(int i=1;;i++)if(Map[x+i][y+i]!=Map[x][y]){res3+=i-1;break;}
    	for(int i=1;;i++)if(Map[x-i][y-i]!=Map[x][y]){res3+=i-1;break;}
    	for(int i=1;;i++)if(Map[x+i][y-i]!=Map[x][y]){res4+=i-1;break;}
    	for(int i=1;;i++)if(Map[x-i][y+i]!=Map[x][y]){res4+=i-1;break;}
    	if(res1>=5||res2>=5||res3>=5||res4>=5)return 1;
    	return 0;
    }
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    	{
    		int x,y;
    		scanf("%d%d",&x,&y);
    		Map[x][y]=(i&1)+1;
    		if(!ans&&judge(x,y))ans=i;
    	}
    	if(!ans)puts("Tie");
    	else if(ans&1)printf("A %d",ans);
    	else printf("B %d",ans);
    	return 0;
    }
    

    rp++

  • 相关阅读:
    Json schema前奏 关于JSON
    笔试题:能被1~10同时整除的最小整数是2520,问能被1~20同时整除的最小整数是多少?
    CentOS7 安装 Docker、最佳Docker学习文档
    2019年4399暑期实习算法题2,迷宫路径条数
    2019vivo秋招提前批笔试题第3题
    python内存机制与垃圾回收、调优手段
    N皇后问题的python实现
    一行代码判断一个数是否是2的整数次方
    在O(1)的时间内删除链表节点
    打印从1到n位数的最大值
  • 原文地址:https://www.cnblogs.com/wzc521/p/11799089.html
Copyright © 2011-2022 走看看