搜索
热搜: NOIP OIer 神牛
查看: 440|回复: 5

【USACO】Checker Challenge题解!

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-3-18 09:23:51 | 显示全部楼层 |阅读模式
本帖最后由 Ethan 于 2023-3-19 09:17 编辑

   
简单来讲,就是八皇后问题。我们可以用深搜解         

注意!         
,最后一行才是总个数,而不是把所有方法都列举出来。            


回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2023-3-19 09:18:36 | 显示全部楼层
本帖最后由 Ethan 于 2023-3-19 09:25 编辑

   
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-3-19 09:20:37 | 显示全部楼层
:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2023-3-19 09:25:50 | 显示全部楼层
                 
回复

使用道具 举报

35

主题

54

帖子

4536

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4536
发表于 2023-3-22 00:43:56 | 显示全部楼层
题解思路
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-3-22 20:20:03 | 显示全部楼层
#include<iostream>
using namespace std;
int n=4,fangfa=0,a[14],num;
bool c[14],d[2*14],e[2*14];
void dfs(int x){
    if(x==n){
        fangfa++;
        if(fangfa<=3){
            for(int i=1;i<=n;i++) cout<<a[i]<<" ";
            cout<<'\n';
        }
        return;
    }
    for(int i=1;i<=n;i++){
        if(!c[i]&&!d[n+x-i]&&!e[x+i]){
            a[x]=i;
            c[i]=d[n+x-i]=e[x+i]=1;
            dfs(x+1);
            c[i]=d[n+x-i]=e[x+i]=0;
        }
    }
    return;
}
int main(){
    cin>>num;
    n=num;
    dfs(1);
    cout<<fangfa;
    return 0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表