首页 > 其他分享 >51. N 皇后c

51. N 皇后c

时间:2024-03-10 14:12:30浏览次数:17  
标签:10 -- visit 51 ++ int 皇后 array

\

这题就是第一次做的时候,斜线没考虑清楚,有四个方向斜线。

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
char temp[10][10]={0};
int visit[10][10]={0};

void in(int i,int j,int n){
    for(int x=0;x<n;x++){
        visit[x][j]++;
        visit[i][x]++;
    }
    int x=i,y=j;
    while(x<n&&y<n){
        visit[x++][y++]++;
    }
    int p=i-1,q=j-1;
    while(p>=0&&q>=0){
        visit[p--][q--]++;
    }
    p=i-1;
    q=j+1;
    while(p>=0&&q<n){
        visit[p--][q++]++;
    }
    p=i+1;
    q=j-1;
    while(p<n&&q>=0){
        visit[p++][q--]++;
    }

    visit[i][j]-=2;
    for(x=0;x<n;x++) temp[i][x]='.';
    temp[i][j]='Q';
}
void out(int i,int j,int n){
    for(int x=0;x<n;x++){
        visit[x][j]--;
        visit[i][x]--;
    }
    int x=i,y=j;
    while(x<n&&y<n){
        visit[x++][y++]--;
    }
    int p=i-1,q=j-1;
    while(p>=0&&q>=0){
        visit[p--][q--]--;
    }
    p=i-1;
    q=j+1;
    while(p>=0&&q<n){
        visit[p--][q++]--;
    }
    p=i+1;
    q=j-1;
    while(p<n&&q>=0){
        visit[p++][q--]--;
    }
    visit[i][j]+=2;
    for(int x=0;x<n;x++) temp[i][x]=0;
}

void dfs(char*** array,int n,int* returnSize,int* column,int index,int count){
    if(count>n||index>n) return;
    if(count==n){
        column[*returnSize]=count;
        array[*returnSize]=(char**)malloc(sizeof(char*)*n);
        for(int i=0;i<n;i++) array[*returnSize][i]=(char*)malloc(sizeof(char)*(n+1));
        for(int i=0;i<n;i++){
            for(int j=0;j<=n;j++){
                array[*returnSize][i][j]=temp[i][j];
            }
        }
        (*returnSize)++;
        return;
    } 
    for(int j=0;j<n;j++){
        if(visit[index][j]==0){
            in(index,j,n);
            dfs(array,n,returnSize,column,index+1,count+1);
            out(index,j,n);
        }
    }
}
char*** solveNQueens(int n, int* returnSize, int** returnColumnSizes) {
    int t[10][10]={0};
    *returnSize=0;
    int* column=(int*)malloc(sizeof(int)*5000);
    char*** array=(char***)malloc(sizeof(char**)*5000);
    dfs(array,n,returnSize,column,0,0);
    *returnColumnSizes=column;
    return array;
}

结果:

标签:10,--,visit,51,++,int,皇后,array
From: https://www.cnblogs.com/llllmz/p/18064127

相关文章

  • 100251. 数组中的最短非公共子字符串 暴力解法
    100251. 数组中的最短非公共子字符串 显示英文描述 我的提交返回竞赛 通过的用户数684尝试过的用户数891用户总通过次数696用户总提交次数1416题目难度Medium给你一个数组 arr ,数组中有 n 个 非空 字符串。请你求出一个长度为 n 的字符串 ans......
  • KBPC2510-ASEMI逆变器整流桥KBPC2510
    编辑:llKBPC2510-ASEMI逆变器整流桥KBPC2510型号:KBPC2510品牌:ASEMI封装:KBPC-4正向电流(Id):25A反向耐压(VRRM):1000V正向浪涌电流:300A正向电压(VF):1.00V引脚数量:4芯片个数:4芯片尺寸:MIL功率(Pd):大功率设备工作温度:-55°C~150°C类型:插件整流桥、整流方桥KBPC2510整流桥描述:......
  • GBU1510-ASEMI逆变器整流桥GBU1510
    编辑:llGBU1510-ASEMI逆变器整流桥GBU1510型号:GBU1510品牌:ASEMI封装:GBU-4最大重复峰值反向电压:1000V最大正向平均整流电流(Vdss):15A功率(Pd):大功率芯片个数:4引脚数量:4类型:插件整流桥、整流扁桥正向浪涌电流:200A正向电压:1.10V最大输出电压(RMS):封装尺寸:如图工作温度:-55......
  • KBPC3510-ASEMI逆变器整流桥KBPC3510
    编辑:llKBPC3510-ASEMI逆变器整流桥KBPC3510型号:KBPC3510品牌:ASEMI封装:KBPC-4正向电流(Id):35A反向耐压(VRRM):1000V正向浪涌电流:400A正向电压(VF):1.00V引脚数量:4芯片个数:4芯片尺寸:MIL功率(Pd):大功率设备工作温度:-55°C~150°C类型:插件整流桥、整流桥KBPC3510整流桥描述:AS......
  • CF514D R2D2 and Droid Army 题解
    分析乱搞题。考虑将区间\([l,r]\)中所有人干掉的代价。设\(cnt_{i}=\max\limits_{j=l}^{r}a_{j,i}\),则代价为:\(\sum\limits_{i=1}^{m}cnt_i\)。很显然,只有在\(\sum\limits_{i=1}^{m}cnt_i\lek\)是,我们才能将这些人全部干掉。考虑枚举右端点\(r\),与每个\(r\)对应的最......
  • GBJ3510-ASEMI电源控制柜专用GBJ3510
    编辑:llGBJ3510-ASEMI电源控制柜专用GBJ3510型号:GBJ3510品牌:ASEMI封装:GBJ-4正向电流(Id):35A反向耐压(VRRM):1000V正向浪涌电流:350A正向电压(VF):1.05V引脚数量:4芯片个数:4芯片尺寸:MIL功率(Pd):大功率设备工作温度:-55°C~150°C类型:插件整流桥、整流桥GBJ3510整流桥描述:ASEMI......
  • 免费网站统计工具对比:统计鸟比百度统计、CNZZ、51La好在哪里?
    统计鸟官网地址:https://www.tongjiniao.com/站长必备!网站数据统计,流量监测平台提供网站数据统计分析、搜索关键词、流量访问来源等服务深入分析用户点击习惯,为智能化运营网站提供更好的用户体验 如果想要了解自己的网站的流量数据,最简单的方法就是为你的网站安装统计代码,在......
  • GBU3510-ASEMI火牛适配器专用整流桥GBU3510
    编辑:llGBU3510-ASEMI火牛适配器专用整流桥GBU3510型号:GBU3510品牌:ASEMI封装:GBU-4正向电流(Id):35A反向耐压(VRRM):1000V正向浪涌电流:300A正向电压(VF):1.10V引脚数量:4芯片个数:4芯片尺寸:MIL功率(Pd):中小功率设备工作温度:-55°C~150°C类型:插件整流桥、整流桥GBU3510整流桥描......
  • 513. 找树左下角的值c
    用的层序遍历/***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/intfindBottomLeftValue(structTreeNode*root){if(!root->left&&!root->right)r......
  • 洛谷题单指南-搜索-P1219 [USACO1.5] 八皇后 Checker Challenge
    原题链接:https://www.luogu.com.cn/problem/P1219题意解读:八皇后,经典回溯问题。解题思路:逐行摆放棋子,关键在于如何快速判断行、列、正斜(左上到右下)、反斜(右上到左下)方向没有已放其他棋子1、由于逐行摆放,因此行不需要判断通过一个boolcol[N]数组即可判断列上是否已摆放其他棋......