最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言通過深度優(yōu)先搜索來解電梯問題和N皇后問題的示例

 更新時間:2016年06月03日 14:49:46   作者:oopos  
深度優(yōu)先搜索即是對一個新發(fā)現(xiàn)的節(jié)點上如果還關(guān)聯(lián)未探測到的邊,就沿此邊探測下去,直到發(fā)現(xiàn)從原點可達的所有點為止,這里我們就來展示C語言通過深度優(yōu)先搜索來解電梯問題和N皇后問題的示例

N皇后問題
問題描述:
在n×n格的棋盤上放置彼此不受攻擊的n個皇后。按照國際象棋的規(guī)則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n后問題等價于再n×n的棋盤上放置n個皇后,任何2個皇后不妨在同一行或同一列或同一斜線上。
需求輸入:
給定棋盤的大小n (n ≤ 13)
需求輸出:
輸出有多少種放置方法。

#include <stdio.h>
#include <math.h>

#define MAX 101

int total = 0;
char m[MAX][MAX];
 
int is_ok(int s,int i,int *a)
{
  int j ;
  for(j=1 ; j< s ; j++)
  if( (abs(i-a[j]) == abs(s-j)) || (i == a[j])) /*按行填入,所以只要檢查列和斜列是否有皇后即可*/
    return 0 ;
  return 1 ;
}

void nfind(int s,int n,int *a)
{
  int i,p,q;

  if( s > n)
  {
    total ++ ;
    printf("========The num of %d is ========== ",total); 
    for(p=1 ; p<= n ; p++)
    {
      for(q=1; q<=n ; q++)
        printf("%c ",m[p][q]);
      printf(" ");
    }
    
  }
  else
  {
    for(i=1 ;i<= n; i++)
   
      if(is_ok(s,i,a))
      { 
         
        a[s]=i ;
        m[s][i]='O' ;
        nfind(s+1,n,a);
        m[s][i]='*' ;      
      }     
  }
}

int main(void)
{
  int n ,a[MAX]={0};
  scanf("%d",&n);
  memset(m,'*',sizeof(m));
  nfind(1,n,a);
  printf(" total=%d ",total);
  system("pause");
  return 0;
}

電梯問題
問題描述:
呵呵,有一天我做了一個夢,夢見了一種很奇怪的電梯。大樓的每一層樓都可以停電梯,而且第i層樓(1<=i<=N)上有一個數(shù)字Ki(0<=Ki<=N)。電梯只有四個按鈕:開,關(guān),上,下。上下的層數(shù)等于當前樓層上的那個數(shù)字。當然,如果不能滿足要求,相應(yīng)的按鈕就會失靈。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),從一樓開始。在一樓,按“上”可以到4樓,按“下”是不起作用的,因為沒有-2樓。那么,從A樓到B樓至少要按幾次按鈕呢?
需求輸入:
輸入文件共有二行,第一行為三個用空格隔開的正整數(shù),表示N,A,B(1≤N≤200, 1≤A,B≤N),第二行為N個用空格隔開的正整數(shù),表示Ki。
需求輸出:
輸出文件僅一行,即最少按鍵次數(shù),若無法到達,則輸出-1。
示例輸入:

5 1 5
3 3 1 2 5

示例輸出:

復制代碼 代碼如下:
3

實現(xiàn)代碼:

#include <stdio.h>
#define MAX 501

int a,b,n ;
int v[MAX],flag=0 ;

void trytofind(int x,int total)
{
   if(x-v[x] == b || x+v[x] == b)
   {
    
   if ( total < flag || flag == 0)
   flag = total ;
    
   }
   else
   {
    if(x+v[x] <= n)
    trytofind(x+v[x],total+1);
    if(x-v[x] >= 1)
    trytofind(x-v[x],total+1);
   }
   
}
int main(void)
{
  int i,j,k ;
  scanf("%d %d %d",&n,&a,&b);
  for(i=1 ; i<= n; i++)
  scanf("%d",&v[i]);
  
  trytofind(a,1) ;
  
  if(flag)
  printf("%d ",flag);
  else
  printf("-1 ");
  
  system("pause");
    
  return 0 ;

} 

相關(guān)文章

  • C語言詳細講解循環(huán)語句的妙用

    C語言詳細講解循環(huán)語句的妙用

    C語言循環(huán)控制語句是一個基于C語言的編程語句,該語句主要有while循環(huán)語句、do-while循環(huán)語句和for循環(huán)語句來實現(xiàn)循環(huán)結(jié)構(gòu),在循環(huán)過程中還有關(guān)鍵字break、continue、do、break控制中斷繼續(xù)與結(jié)束等操作
    2022-04-04
  • c語言冒泡排序和選擇排序的使用代碼

    c語言冒泡排序和選擇排序的使用代碼

    算法中排序是十分重要的,而每一個學習計算機的都會在初期的時候接觸到這種排序,下面這篇文章主要給大家介紹了關(guān)于c語言冒泡排序和選擇排序使用的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 基于C++ Lambda表達式的程序優(yōu)化

    基于C++ Lambda表達式的程序優(yōu)化

    這篇文章主要介紹了基于C++ Lambda表達式的程序優(yōu)化的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • C C++ 題解LeetCode2360圖中的最長環(huán)示例

    C C++ 題解LeetCode2360圖中的最長環(huán)示例

    這篇文章主要為大家介紹了C C++ 題解LeetCode2360圖中的最長環(huán)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • C語言指針必備基礎(chǔ)全面覆蓋

    C語言指針必備基礎(chǔ)全面覆蓋

    數(shù)據(jù)對象是指存儲在內(nèi)存中的一個指定數(shù)據(jù)類型的數(shù)值或字符串,它們都有一個自己的地址,指針是保存這個地址的變量,本篇文章帶你掌握C語言指針的用法
    2021-10-10
  • C語言自制測色弱找方塊游戲的示例代碼

    C語言自制測色弱找方塊游戲的示例代碼

    這篇文章主要介紹了基于C語言自制測色弱找方塊的游戲。該游戲是仿照最近網(wǎng)上流行的找方塊游戲編寫的,可玩性還是挺高的,感興趣的可以了解一下
    2022-12-12
  • 深入淺出理解C語言指針的綜合應(yīng)用

    深入淺出理解C語言指針的綜合應(yīng)用

    指針是指向另一個變量的變量。意思是一個指針保存的是另一個變量的內(nèi)存地址。換句話說,指針保存的并不是普通意義上的數(shù)值,而是另一個變量的地址值。一個指針保存了另一個變量的地址值,就說這個指針“指向”了那個變量
    2022-02-02
  • C/C++?控制臺等待指令解析

    C/C++?控制臺等待指令解析

    這篇文章主要介紹了C/C++?控制臺等待指令解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++?OpenCV實現(xiàn)物體尺寸測量示例詳解

    C++?OpenCV實現(xiàn)物體尺寸測量示例詳解

    本文主要介紹了利用OpenCV對物體的尺寸進行測量,即先定位到待測物體的位置,然后測量物體的寬高。感興趣的同學可以跟隨小編一起學習學習
    2022-01-01
  • C++學習之指針的使用詳解

    C++學習之指針的使用詳解

    這篇文章主要為大家詳細介紹了C++中指針的相關(guān)知識,文中的示例代碼講解詳細,對我們的學習或工作有一定的價值,感興趣的小伙伴可以了解一下
    2023-03-03

最新評論

金乡县| 常州市| 伊川县| 凌源市| 博野县| 绥芬河市| 鄂托克旗| 湘阴县| 镇坪县| 太原市| 西乌珠穆沁旗| 婺源县| 新田县| 石阡县| 临城县| 平阳县| 湘阴县| 奈曼旗| 达孜县| 香港 | 上杭县| 林芝县| 莎车县| 嘉义县| 定日县| 喀喇| 彭阳县| 宜川县| 江安县| 电白县| 安达市| 论坛| 徐闻县| 阳谷县| 莱州市| 灌南县| 墨玉县| 桐乡市| 琼海市| 临夏市| 仙游县|