只要用哪几列就可以使P行都不同。暴力DFS就可以了。
#include<stdio.h> #include<string.h> int n, p;//n列 p行 int map[105][20]; int flaglie[20]; char s[105][20]; int sum; void sou(int ans) { int i, c = 0, j, flag = 0; if (ans == n) { for (i = 0; i < p; i++) { c = 0; for (j = 0; j < n; j++) { if (flaglie[j] == 1) { s[i][c] = map[i][j] + '0'; c++; } } s[i][c] = '