写出来了很开心。
321——上代码!
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
struct rect{
int r[4][4];
rect(){
memset(r,0,sizeof(r));
}
bool column(){
int judge[5]={0};
for(int j=0;j<4;j++){
for(int i=0;i<4;i++){
judge[ r[i][j] ]++;
}
for(int t=1;t<=4;t++){
if (judge[t]==0 || judge[t]>1) return 0;
}
memset(judge,0,sizeof(judge));
}
return 1;
}
bool block(){
for(int j=0;j<4;j+=2){
for(int i=0;i<4;i+=2){
int judge[5]={0};
judge[ r[i][j] ]++;
judge[ r[i][j+1] ]++;
judge[ r[i+1][j] ]++;
judge[ r[i+1][j+1] ]++;
for(int t=1;t<=4;t++){
if (judge[t]==0 || judge[t]>1) return 0;
}
}
}
return 1;
}
};
int main()
{
int a[4]={1,2,3,4},b[24][4]={{1,2,3,4}},i=1,ans=0;
while(next_permutation(a,a+4)){
memcpy(b[i],a,sizeof(a));
i++;
}
for(int i=0;i<24;i++)
for(int j=i+1;j<24;j++)
for(int m=j+1;m<24;m++)
for(int n=m+1;n<24;n++){
rect rec;
memcpy(rec.r[0],b[i],sizeof(b[i]));
memcpy(rec.r[1],b[j],sizeof(b[j]));
memcpy(rec.r[2],b[m],sizeof(b[m]));
memcpy(rec.r[3],b[n],sizeof(b[n]));
//列
if(!rec.column()) continue;
//块
if(!rec.block()) continue;
ans++;
}
cout<<ans;
}