Help!
  • 板块学术版
  • 楼主CreeperXLX
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/11/13 15:32
  • 上次更新2023/10/27 03:06:18
查看原帖
Help!
300049
CreeperXLX楼主2022/11/13 15:32

Description

多子连棋是五子棋的一种扩展:原来是黑白双方轮流各下1个棋子,5子连珠为赢;现在是黑白双方轮流各下L个棋子,K子连珠为赢。

为了让棋盘上的黑白棋子数目的差距尽可能小,我们约定一开始由黑方在棋盘里下⌈L/2⌉个棋子,其中⌈L/2⌉表示L/2取上整;

然后由白方在棋盘里下L个棋子;

然后由黑方在棋盘里下L个棋子;

然后由白方在棋盘里下L个棋子;

然后由黑方在棋盘里下L个棋子;

然后由白方在棋盘里下L个棋子; ……

如此交替。

双方争夺的目标是尽快形成k子连珠:如果棋盘上有连续的k个同色棋子位于同一行、同一列或同一斜线,我们就称这个颜色的棋子“形成了k子连珠”。

你的任务是编写一个程序,模拟双方的行棋,然后输出下列对弈结果:

最大的k是多少?

谁先形成了1子连珠?

谁先形成了2子连珠?

谁先形成了3子连珠?

谁先形成了4子连珠?

谁先形成了5子连珠?

……

谁先形成了k子连珠?

Input (From File: gobang.in)

第1行有3个整数N、M、L,表示棋盘的大小是N行N列,双方一共下了M个棋子,行棋规则是黑白双方轮流各下L个棋子。

接下来M行每行2个整数x、y,表示第1个棋子、第2个棋子、……、第M个棋子分别下在了棋盘上的第x行第y列。

请根据题目描述自行判断每颗棋子的颜色。

输入保证任何棋子都不会超出棋盘边界,也不会有任何2颗棋子下在同一个位置。

Output (To File: gobang.out)

第1行输出K,表示M个棋子下完后,双方最多形成了K子连珠,没有任何一方形成了(K+1)子连珠。

第2行输出K个字母,表示谁先形成了1子连珠、2子连珠、……、K子连珠:

如果黑方先形成了1子连珠,则第1个字母为“B”,否则第1个字母为“W”;

如果黑方先形成了2子连珠,则第2个字母为“B”,否则第2个字母为“W”;

如果黑方先形成了3子连珠,则第3个字母为“B”,否则第3个字母为“W”;

……

如果黑方先形成了K子连珠,则第K个字母为“B”,否则第K个字母为“W”;

Sample Input 1

3 9 1 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 Sample Output 1

3 BWB

2022/11/13 15:32
加载中...