emmm…
每行只有一个1,每列不超过三个1
#include <iostream>
using namespace std;
void show(int arry[][5])
{
int num = 0;
for (int i0 = 0; i0 < 5; i0++)
{
for (int i1 = 0; i1 < 5; i1++)
{
if (num % 5 == 4)
{
printf("%d\n", arry[i0][i1]);
num++;
}
else
{
printf("%d ", arry[i0][i1]);
num++;
}
}
}
}
int main(void)
{
int arry[5][5] = {0};
int rowMax[5] = {0};
int rank = 0;
for (int i0 = 0; i0 < 5; i0++)
{
arry[0][i0] = 1;
rowMax[i0]++;
for (int i1 = 0; i1 < 5; i1++)
{
arry[1][i1] = 1;
rowMax[i1]++;
for (int i2 = 0; i2 < 5; i2++)
{
arry[2][i2] = 1;
rowMax[i2]++;
for (int i3 = 0; i3 < 5; i3++)
{
arry[3][i3] = 1;
rowMax[i3]++;
for (int i4 = 0; i4 < 5; i4++)
{
arry[4][i4] = 1;
rowMax[i4]++;
int flag = true;
for (int j = 0; j < 5; j++)
{
if (rowMax[j] > 3)
{
flag = false;
break;
}
}
if(flag)
{
printf("%d\n", rank);
show(arry);
rank++;
}
arry[4][i4] = 0;
rowMax[i4]--;
}
arry[3][i3] = 0;
rowMax[i3]--;
}
arry[2][i2] = 0;
rowMax[i2]--;
}
arry[1][i1] = 0;
rowMax[i1]--;
}
arry[0][i0] = 0;
rowMax[i0]--;
}
return 0;
}
呕~