救救孩子吧,真的不会写

在一个44的小方格(如图所示)中放置8个号,
使得每行每列放且仅放两个*号
求出所有的基本解

没有图片哦


#include<stdio.h>

void test(int n);
void print();

int count = 0;//count用来记录有多少种摆法
int col_count[4] = {0,0,0,0};//每一列星号的个数
int a[4][2];//用来记录每个星号放置的位置
char s[4][4];//数组

int main() {
    test(1);
    return 0;
}

void test(int n){
    for(int i=0;i<4;i++){
        if(col_count[i]<2){ //保证两个*
            col_count[i]++;
            a[n-1][0] = i; //记录这一行第一个*的位置
            for(int j=i+1;j<4;j++){
                if(col_count[j]<2){ //保证两个*
                    col_count[j]++;
                    a[n-1][1] = j; //记录这一行第二个*的位置
                    if(n<4){
                        test(n+1);//继续下一行
                    }else{
                        count++;
                        print();//输出
                    }
                    col_count[j]--;
                }
            }
            col_count[i]--;
        }
    }
}

void print(){
    for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
            s[i][j] = '0';//为了看得清楚,其余位置上放了0
        }
    }
    
    for(int i=0;i<4;i++){
        s[i][a[i][0]] = '*';
        s[i][a[i][1]] = '*';
    }
    
    printf("第%d个\n",count);
    for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
            printf("%c",s[i][j]);
        }
        printf("\n");
    }
}