题目大意:给出若干个骨牌,有00, 01, 10, 11四种骨牌,要求重排后,每一竖的上1的个数的最大值最小。
解题思路:贪心,奇数行从1~m放,偶数行从m~1放,均从11先放,在放10,和01(01和10是一样的,因为可以旋转),注意奇数行01,偶数就得10.
#include <stdio.h>
#include <string.h>
const int N = 1e3+10;
const int M = 4;
const char sign[M][M] = { "00", "01", "10", "11"};
int n, m, c[M], g[N][N];
void init() {
char str[M];
memset(g, 0, sizeo