二分图匹配。
先检查每个数字$1$的个数是否满足条件,不满足直接就是无解。剩下的情况可以建立二分图,如果现在的某一列可以对应于原图的某一列,那么建边。如果二分图的最大匹配是$7$,则有解,否则误解。
#includeusing namespace std;int n;int num[15],g[15][15];char s[15][15];int c[20];int cx[15], cy[15];int mk[15],nx,ny;int path(int u){ for (int v = 0; v