五子棋裁判

描述

在程序設計實踐課上,老師給大家布置下了這樣的實驗任務:編寫一個五子棋應用程序

勝負判定是五子棋程序最核心的部分。給出當前棋盤的狀態,請你完成對五子棋勝負的判定(僅考慮當前狀態,不考慮后續落子)

規則:在水平、垂直或對角線方向形成5個以上棋子連續的一方獲勝

輸入:

輸入第一行為一個整數?t?(1≤t≤100),代表一共有?t?組輸入

對于每組輸入:

第一行一個整數?n?(1≤n≤20),代表棋盤的大小為?n×?n

之后的?n?行,每行包含一個長度為?n?的字符串,代表當前棋盤的狀態,其中空位用字符.表示,黑棋、白棋分別用字符BW表示

輸入保證只會出現勝負未定、黑棋勝利、白棋勝利三種情況(即最多只會有一方有5連子

輸出:

輸出?t?行 ,分別為每組輸入的勝負結果

若黑棋勝利輸出"Black", 若白棋勝利輸出"White",若勝負未定則輸出"Not so fast"

輸入樣例:
3
5
WWWWW
BBBB.
.....
.....
.....
5
B...W
.B.W.
..B..
.W.B.
W...B
5
.....
.....
.....
.....
.....
輸出樣例:
White
Black
Not so fast

代碼實現:

#include<stdio.h>
#include<string.h>
char s[21][21];
int extend(int n,int i,int j)
{if(s[i][j]=='.')return 0;int sum=0;int x=i;while(x<n&&s[x][j]==s[i][j]){x++,sum++;}if(sum>=5){if(s[i][j]=='W')return 1;else return -1;}int y=j;sum=0;while(y<n&&s[i][y]==s[i][j]){y++,sum++;}if(sum>=5){if(s[i][j]=='W')return 1;else return -1;}x=i,y=j,sum=0;while(x<n&&y<n&&s[x][y]==s[i][j]){x++,y++,sum++;}if(sum>=5){if(s[i][j]=='W')return 1;else return -1;}x=i,y=j,sum=0;while(x<n&&y>=0&&s[x][y]==s[i][j]){x++,y--,sum++;}if(sum>=5){if(s[i][j]=='W')return 1;else return -1;}return 0;
}
int judge(int n)
{for(int i=0;i<n;i++){getchar();for(int j=0;j<n;j++){scanf("%c",&s[i][j]);}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){int res=extend(n,i,j);if(res>0)return 1;else if(res<0)return -1;}}return 0;
}
int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);int res=judge(n);if(res>0){printf("White\n");}else if(res<0){printf("Black\n");}else printf("Not so fast\n");}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712392.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712392.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712392.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Typora快捷鍵設置詳細教程(內附每個步驟詳細截圖)

&#x1f60e; 作者介紹&#xff1a;我是程序員洲洲&#xff0c;一個熱愛寫作的非著名程序員。CSDN全棧優質領域創作者、華為云博客社區云享專家、阿里云博客社區專家博主、前后端開發、人工智能研究生。公粽號&#xff1a;程序員洲洲。 &#x1f388; 本文專欄&#xff1a;本文…

在vue2中使用餅狀圖

1.引入vue2和echarts <script src"https://cdn.jsdelivr.net/npm/vue2.7.14/dist/vue.js"></script> <script src"https://cdn.jsdelivr.net/npm/echarts5.4.0/dist/echarts.min.js"></script> 2.1 補充基本的body內容 <div id…

存儲過程基本了解

文章目錄 介紹存儲過程示例1. 目的2. 輸入參數3. 輸出參數4. 執行邏輯5. 返回值6. 示例用法7. 注意事項 存儲過程的關鍵字有哪些簡單實操 介紹 存儲過程是一組預編譯的SQL語句&#xff0c;以及流程控制語句&#xff0c;封裝在數據庫服務器中并可以被重復調用。它們可以接收參數…

5G 網絡建設【華為OD機試-JAVAPythonC++JS】

題目描述 現需要在某城市進行5G網絡建設&#xff0c;已經選取N個地點設置5G基站&#xff0c;編號固定為1到N&#xff0c;接下來需要各個基站之間使用光纖進行連接以確保基站能互聯互通&#xff0c;不同基站之間架設光纖的成本各不相同&#xff0c;且有些節點之間已經存在光纖相…

CentOS7安裝MySQL5.7

查看并卸載系統自帶的 Mariadb rpm -qa|grep mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 檢查系統是否安裝過MySQL rpm -qa | grep mysql 檢查有無MySQL用戶組 cat /etc/group | grep mysql cat /etc/passwd | grep mysql 創建MySQL用戶組和用戶 groupadd m…

特斯拉一面算法原題

來自太空的 X 帖子 埃隆馬斯克&#xff08;Elon Musk&#xff09;旗下太空探索技術公司 SpaceX 于 2 月 26 號&#xff0c;從太空往社交平臺 X&#xff08;前身為推特&#xff0c;已被馬斯克全資收購并改名&#xff09;發布帖子。 這是 SpaceX 官號首次通過星鏈來發送 X 帖子&a…

SpringBoot+Vue實戰:打造企業級項目管理神器

??計算機編程指導師 ??個人介紹&#xff1a;自己非常喜歡研究技術問題&#xff01;專業做Java、Python、微信小程序、安卓、大數據、爬蟲、Golang、大屏等實戰項目。 ??實戰項目&#xff1a;有源碼或者技術上的問題歡迎在評論區一起討論交流&#xff01; ?? Java實戰 |…

【YOLO】INT8量化C++版

三、INT8量化 C++ 3.1下載coco128數據集 cd /mnt/workspace/yolov5/data/scripts sh get_coco128.sh3.2 模型準備 #onnx轉simple_onnx pip install onnx-simplifier python -m onnxsim yolov5s.onnx yolov5s-simple.onnx3.3 下載量化代碼庫 git clone https://github.com/W…

水豚鼠標助手 強大的鼠標美化工具

水豚鼠標助手 水豚鼠標助手是一款 鼠標換膚、屏幕畫筆、放大鏡、聚光燈、屏幕放大、倒計時功能的強大屏幕演示工具。 軟件助手獲取 水豚鼠標助手1.0.0 安裝教程 第一步&#xff1a;下載后&#xff0c;雙擊軟件安裝包 第二步&#xff1a;Windows可能會出現提示彈窗&#xff…

【已親測有效】如何徹底刪除nodejs,避免影響安裝新版本

第一步開始菜單搜索uninstall node.js&#xff0c;點擊之后等待刪除&#xff08;刪除node_modules文件夾以及以下這些文件&#xff09; 第二步手動刪除nodejs下載位置的其他文件夾。&#xff08;就是另外自己新建的兩個文件夾node_cache和node_global&#xff09; 到這里其實應…

uniapp實現多行文本溢出超過指定行數 展開 收起

一、組件封裝 <template><view class"multiline"><view class"info"><view :class"{hide:!iSinfo}" :style"!iSinfo?computedStyle:"><view :style"{ color: textColor,fontWeight:fontWeight,font…

網絡安全課程VIP介紹(比同行便宜)

免責聲明 本文發布的工具和腳本&#xff0c;僅用作測試和學習研究&#xff0c;禁止用于商業用途&#xff0c;不能保證其合法性&#xff0c;準確性&#xff0c;完整性和有效性&#xff0c;請根據情況自行判斷。如果任何單位或個人認為該項目的腳本可能涉嫌侵犯其權利&#xff0c…

Javaweb day7

前后端分類開發 Yapi 環境配置 vue項目簡介 項目啟動 更改端口號 vue項目開發流程

【c++設計模式05】創建型3:抽象工廠模式(Abstact Factory Pattern)

【c設計模式05】創建型3&#xff1a;抽象工廠模式&#xff08;Abstact Factory Pattern&#xff09; 一、工廠模式二、抽象工廠模式三、UML類圖四、demo五、總結 原創作者&#xff1a;鄭同學的筆記 原創地址&#xff1a;https://zhengjunxue.blog.csdn.net/article/details/132…

Spring 源碼解析

文章目錄 前言相關Spring的定義接口整體代碼StartupStep contextRefresh this.applicationStartup.start("spring.context.refresh")prepareRefresh()obtainFreshBeanFactory()registerBeanPostProcessors(beanFactory)SpringAOP原碼流程EnableAspectJAutoProxyAnno…

Linux調試器-gdb使用與馮諾依曼體系結構

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言 Linux調試器-gdb使用 1. 背景 2. 開始使用 馮諾依曼體系結構 總結 前言 世上有兩種耀眼的光芒&#xff0c;一種是正在升起的太陽&#xff0c;一種是正在努力學…

計算機網絡-網絡互連和互聯網(五)

1.路由器技術NAT&#xff1a; 網絡地址翻譯&#xff0c;解決IP短缺&#xff0c;路由器內部和外部地址進行轉換。靜態地址轉換&#xff1a;靜態NAT&#xff08;一對一&#xff09; 靜態NAT&#xff0c;內外一對一轉換&#xff0c;用于web服務器&#xff0c;ftp服務器等固定IP的…

(定時器/計數器)中斷系統(詳解與使用)

講解 簡介 定時器/計數器 定時器實際上也是計數器,只是計數的是固定周期的脈沖 定時和計數只是觸發來源不同(時鐘信號和外部脈沖)其他方面是一樣的。 定時器在單片機內部就像一個小鬧鐘一樣,根據時鐘的輸出信號,每隔“一秒”,計數單元的數值就增加一,當計數單元數值…

C++:String類的使用

創作不易&#xff0c;感謝三連&#xff01;&#xff01; 在C語言中&#xff0c;我們想要存儲字符串的話必須要用字符數組 char str[]"hello world"這其實是將在常量區的常量字符串拷貝到數組中&#xff0c;我們會在數組的結尾多開一個空間存儲\0&#xff0c;這樣我…

前端構建之CERT_HAS_EXPIRED和certificate has expired解決方案

問題 2024年 1 月 22 日&#xff0c;淘寶原鏡像域名&#xff08;registry.npm.taobao.org&#xff09;的 HTTPS 證書正式到期。如果想要繼續使用&#xff0c;需要將 npm 源切換到新的源&#xff08;registry.npmmirror.com&#xff09;&#xff0c;否則會報錯。 報錯信息為&a…