给定⼀个棋盘,N⾏,M列,其中3=<M<=20,3=<N<=100,该棋盘被 ⽩⾊和⿊⾊的棋⼦填满,如果某
⼀⾏都是⿊棋,我们称这⼀⾏为⼀条 路,假设棋盘可以按列翻转(该列棋⼦颜⾊取反),给定⼀个K
值,3= <K<=M,对棋盘翻转K次(必须翻转K次,可以选择翻转任⼀列,也可以 对某⼀列多次翻转)求解
经过K次翻转以后,最多有⼏条路?,如果没有⼀条路,输出-1
// 黑白棋.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//给定?个棋盘,N?,M列,其中3=<M<=20,3=<N<=100,该棋盘被 ??和??的棋?填满,如果某
//??都是?棋,我们称这??为?条 路,假设棋盘可以按列翻转(该列棋?颜?取反),给定?个K
//值,3 = < K <= M, 对棋盘翻转K次(必须翻转K次,可以选择翻转任?列,也可以 对某?列多次翻转)求解
//经过K次翻转以后,最多有?条路?,如果没有?条路,输出 - 1
#include <iostream>
using namespace std;
int N, M, k, minn = 0, q = 0;
int board[101][21], boardCopy[101][21];
int col[101], book[101];
int path[21];
//计