N皇后(遞迴演算法)
using namespace std;
int c=0;
int cheak(int x[],int nowhang)
{
//判斷是否在同一列,在對角
int i;
for(i=1;i<nowhang;i++)
if(x[i]==x[nowhang]||fabs(i-nowhang)==fabs(x[i]-x[nowhang]))
return 0;
return 1;
}
void queen(int n,int x[],int now)
{
//從第一行開始x=1
int i;
for(i=1;i<=n;i++)
{
x[now]=i;//每一次從第一列開始往最後一列放
if(cheak(x,now)==1)
{
if(now==n)//放到最後一行,計數++
c++;
else
queen(n,x,now+1);//否則繼續往下一行放
}
}
}
int main()
{
int t,n,x[25];
cin>>t;
while(t--)
{
cin>>n;
queen(n,x,1);
cout<<c<<endl;
c=0;
}
return 0;
}
相關推薦
N皇后(遞迴演算法)
#include<bits/stdc++.h>using namespace std;int c=0;int cheak(int x[],int nowhang){//判斷是否在同一列,在對角 int i;for(i=1;i<nowhang;i++)if(x[i]==x[nowhang]||
演算法-N皇后(遞迴)
package MOOC; /** * 輸入整數n,要求n個國際皇后,擺在n*n的棋盤上,使其互相不能攻擊(不在同一行列對角線上),輸出全部方案 */ import java.util.Scann
N皇后(遞迴經典演算法)
一、N皇后 1、題目 將n個皇后擺放在N*N的棋盤中,互相不可攻擊,有多少種擺放方式,每種擺放方式具體是怎樣的? 2、解題思路 解題思路: 1、將棋盤放在一個二維陣列中,同時設定方向陣列: static const int dx[]
Mr.J--HanioTower(遞迴演算法)
HanioTower(漢諾塔),資料結構高階遞迴中的經典問題,是每一個初學資料結構的同學必經之路,可能有的同學在學習C語言時候就已經遇見過這個問題。 漢諾塔的起源:相傳在古印度聖廟中,有一種被稱為漢諾塔(Hanoi)的遊戲。該遊戲是在一塊銅板裝置上,有三根杆(編號A、B、C),在A杆自下而上
【資料結構】二叉樹的構建及遍歷(遞迴演算法)
題目描述: 編一個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立一個二叉樹(以指標方式儲存)。 例如如下的先序遍歷字串: ABC##DE#G##F### 其中“#”表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結果。 具體程式
習題4-11 兔子繁衍問題 (15 分)(遞迴演算法)(陣列演算法)
一對兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。假如兔子都不死,請問第1個月出生的一對兔子,至少需要繁衍到第幾個月時兔子總數才可以達到N對? 輸入格式: 輸入在一行中給出一個不超過10000的正整數N。 輸出格式: 在一行中輸出兔子總數達到N對
揹包問題(遞迴演算法)
#include<stdio.h> #include<stdlib.h> #define N 100 int n; int limitw,totv,maxv; int cop[N],option[N]; struct bag{ int weig
演算法——Fibonacci數列的多種解法(遞迴演算法)
咳咳,金宸歐巴今天來更新部落格了,今天想寫的一點內容是關於斐波那契數列的解法,fibonacci數列的定義如下: F(n)= { a, n=1 b,
Python解決漢諾塔(遞迴演算法)
move(1,a,b,c) 把柱子a上最後1個盤子移到柱子c上 move(n-1,b,a,c) 把柱子b上的n-1個盤子通過柱子a移動到柱子c上print move(4, 'A', 'B', 'C')
二叉樹的建立(先序)先序中序後序遍歷(遞迴演算法),求葉子結點個數,求樹的高度,樹中結點的個數,值為data的結點所在的層數
#include<iostream> #include<cstdio> #include<malloc.h> #define OVERFLOW -2 typedef struct BiTNode{ char data;
java 解決 漢諾塔問題(遞迴演算法)
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Exercise6_37 extends JApplet implements ActionListener
八皇后(遞迴實現)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm&g
演算法——分蘋果問題和算24問題(遞迴演算法)
#include <iostream>using namespace std;/*分為n>m和n<m兩種情況。當n>m時,一定有盤子為空,此時f(m,n)=f(m,m)當n<=m時,分為有盤子為空時(至少有一個盤子為空):f(m,n-1),
全排列(遞迴演算法)
一. 全排列演算法 首先:什麼是全排列=》百度一下 從n個不同元素中任取m(m≤n)個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的一個排列。當m=n時所有的排列情況叫全排列。 公式:全排列數
先序遍歷建立並輸出二叉樹(遞迴演算法)
//程式碼如下: #include<stdio.h> #include<stdlib.h> typedef struct Node //二叉樹結構定義 {
貪婪+回溯演算法------迷宮問題(遞迴實現)
前提 很明顯,初始迷宮的路和牆需要定義和儲存,(這裡用的迷宮用陣列儲存,用1表示牆,用0表示未走過的路。) 需要明確判斷下一步朝哪個方向走?(這裡的方向是:下->右->上->左,這裡將方向用一個二維陣列來儲存) 如何判斷下一步是否在迷宮外?這
隨筆-求斐波那契第n項(遞迴/非遞迴)
題目: 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 n<=39 思路:第N項為n-1 + n-2 和; 遞迴: public class Solution { public int Fibonacc
LeetCode144. 二叉樹的前序遍歷(非遞迴演算法)
給定一個二叉樹,返回它的 前序 遍歷。 示例: 輸入: [1,null,2,3] 1 2 / 3 輸出: [1,2,3] 進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎? /** * Definition for a binary tree node.
php實現無限級樹型選單(函式遞迴演算法)
大概步驟如下: 首先到資料庫取資料,放到一個數組, 然後把資料轉化為一個樹型狀的陣列, 最後把這個樹型狀的陣列轉為html程式碼。 也可以將第二步和第三步合為一步。 詳細如下: 1。資料庫設計: 指令碼如下: CREATE TABLE `bg_cate`(`cate_I
用DFS輸出n個數的全排列(遞迴實現)
最近在研究DFS,可能腦子不太夠吧,很多題都不知道怎麼實現,全排列應該是最簡單的題了。執行成功的程式碼如下所示:#include<stdio.h> #include<iostream> #include<string.h> using na