導航:首頁 > 游戲攻略 > 重排九宮游戲攻略

重排九宮游戲攻略

發布時間:2020-04-11 02:48:37

1、跪求重排九宮的C語言演算法,要完整的程序!我的編譯器是VC6.0

給分,馬上給你發一份現成的.

2、重排九宮問題(用java實現)

import java.util.Arrays;
public class NineGridTest{
public static void main(String[] args){
//三行數據依次排列9個元素構造實例,空位填0,調用go方法獲取答案。
NineGrid example=new NineGrid(new int[]{1,6,5,3,0,2,7,8,4});
int[] answer=example.go();
if(answer==null){
System.out.println("沒有找到步驟");
}
else{
for(int i=0;i<answer.length;i++){
System.out.print(answer[i]);
}
System.out.println();
}
}
}
class NineGrid{
private static final int MAX_STEP=50;
private static final int[] right=new int[]{1,2,3,8,0,4,7,6,5};
private int vacant,length;
private int[] grids,answer;
public NineGrid(int[] grids){
if(grids.length!=9){
throw new IllegalArgumentException(String.format("缺少數據:%1$d(%2$d)",grids.length,9));
}
int i,j;
for(i=8;i>=0;i--){
for(j=0;j<9;j++){
if(grids[j]==i){
break;
}
}
if(j==9){
throw new IllegalArgumentException("無效的數字序列。缺少:"+i);
}
}
this.grids=grids;
answer=new int[50];
length=0;
}
public int[] go(){
for(vacant=0;vacant<9&&grids[vacant]!=0;vacant++);
return nextStep(0)?Arrays.copyOf(answer,length):null;
}
private boolean OK(){
return Arrays.equals(grids,right);
}
private boolean nextStep(int step){
if(step==MAX_STEP){
return false;
}
int[] siblings=getSiblings(vacant);
for(int i=0;i<siblings.length;i++){
if(step>0&&grids[siblings[i]]==answer[step-1]){
continue;
}
grids[vacant]=grids[siblings[i]];
answer[step]=grids[vacant];
grids[siblings[i]]=0;
vacant^=siblings[i];
siblings[i]^=vacant;
vacant^=siblings[i];
if(OK()){
length=step+1;
return true;
}
else{
boolean result=nextStep(step+1);
if(result){
return true;
}
else{
grids[vacant]=grids[siblings[i]];
vacant=siblings[i];
grids[vacant]=0;
}
}
}
return false;
}
private int[] getSiblings(int position){
switch(position){
case 0:return new int[]{1,3};
case 1:return new int[]{0,2,4};
case 2:return new int[]{1,5};
case 3:return new int[]{0,4,6};
case 4:return new int[]{1,3,5,7};
case 5:return new int[]{2,4,8};
case 6:return new int[]{3,7};
case 7:return new int[]{4,6,8};
case 8:return new int[]{5,7};
default:return null;
}
}
}
//遞歸演算法。超慢。。。。

3、求重排九宮格過程~~請各位幫一下~謝謝啦~

不用排了,初始狀態的逆序數是奇數,如果只是交換含9的相鄰格的話不可能排成順序,只能排成
1 2 3
4 5 6
8 7 9

4、3x3重排九宮問題

http://pan.baidu.com/s/1gd2BwH1

這個是標準的圖片靠空格zhidao移動的自解。

空格只是一個量而已。你可以版用0代替權,也可以用8代替。

初始化得改改。

5、九宮格1-9個數字加起來等於15應該怎麼排列

九宮格1-9個數字知加起來等於15有四種不同的排列方式:

一:

  

二:

三:

四:

(5)重排九宮游戲攻略擴展資料

九宮格,一款數字游戲,起源於河圖洛書,河圖與洛書是中國古代流傳下來的兩幅神秘圖案,歷來被道認為是河洛文化的濫觴,中華文明的源頭,被譽為"宇宙魔方"。相傳,上古伏羲氏時,洛陽東北孟津縣境內的黃河中浮出龍馬,背回負"河圖",獻給伏羲。伏羲依此而演成八卦,後為《周易》來源。又相傳,大禹時,洛陽西洛寧縣洛河中浮出神龜,背馱"洛書",獻給大禹。大禹依此治水成功,遂劃天下為九州。又依此定九章大法,治理社會,流傳下來收入《尚書》中,名《洪範》。《答易·系辭上》說:"河出圖,洛出書,聖人則之",就是指這兩件事。

6、回憶80後最愛玩的玩具有哪些

華容道故事出自古典小說《三國演義》,說的是劉備和孫權聯合,在赤壁一戰中,把曹操殺了個片甲不留。曹操只帶了十餘人馬,沿華容小道落荒而逃。埋伏在小道上的關羽思念曹操舊情,放走了他,使他得以逃出華容道。
後來這個故事成了中國古代一種圖形移位玩具的名稱。這種玩具是要將一塊大圖塊通過空位移到出口,和華容道故事有些相似。後來根據不同時代的特點,叫法不一,有叫「關羽放曹」的,有叫「曹操 逼走華容道」,也有叫「魯智深沖出五台山」、「趕走紙老虎」、「敢把皇帝拉下馬」、「船塢排檔」的等等。
華容道玩具到底成形於何時?目前尚無考證材料。中國最早研究這種玩具的是西北工大教授姜長英,他在1949年出版的《科學消遣》一書中,專列有「華容道」內容。他說,最早看到的華容道實物是在40年代的上海。1952年數學家許蒓舫在《數學漫談》一書中也提到了華容道。1956年武漢出版的《數學通訊》發表過這種游戲的征解文章。上世紀80年代,一些媒體組織過華容道比賽,同時有一些專著出版。
華容道的誕生,有一個發展演變過程,其雛形應首推中國唐宋時代風行的重排九宮游戲。九宮游戲的起源,可以追溯到遠古時代的八卦、河圖和洛書,河圖和洛書是數學里的三階幻方,中國古代叫「縱橫圖」。唐宋時代的數學書中記載有許多縱橫圖的排法,在此基礎上,就產生了重排九宮游戲。現在北京益智玩具專家余俊雄將這種游戲設計成一種「八仙過海」玩具。毛鵬將重排九宮游戲與魔方結合,創制了中華夢幻魔方玩具。
華容道玩具經過多年傳播得以定型,其典型樣式是包括棋盤和棋子兩部分,棋盤有4 5個方格,棋子共10枚,分別佔1、2、4個方格,其中最大的一枚棋子被命名為曹操,中號的5枚棋子為劉備的 「五虎上將」,小號的4枚棋子是兵。玩法是通過棋盤的2個空格將曹操調到出口。
華容道的棋子布局形式多種多樣,典型樣式為「橫刀立馬」。名稱來歷是關羽棋子橫著放,關羽武器為刀,故名「橫刀」;馬超棋子立著放,故名「立馬」。一般玩法是要求用最少步數使曹操走到出口。據資料介紹,日本藤村幸三郎在《數理科學》上發表了85步解法,後清水達雄減到83步,美國馬丁·加德納又減到81步。據新四軍老戰士梁青回憶,當年戰士們在休息時也常玩這種玩具,就得到81步的解法。這是最少的步數,也是不可再減的記錄。華容道除了「橫刀立馬」典型布局外,還有其他布局,多達數百種。中國古老移圖游戲大約在元朝時經中亞傳到歐洲。1914年美國智力大師山姆·勞埃德在《趣題大全》一書中,就引進了「中國的文字轉換趣題」,這實際上也是一種移圖玩具。西方19世紀末廣為流行的「移動十五」(The Fifteen puzzle)游戲就是在中國「重排九宮」基礎上發明的。華容道吸收了「重排九宮」和「移動十五」玩具的優點,採取了移動10塊圖形方案,所以英文中講華容道稱作 Chinese Sliding Block(中國滑塊難題)。

「華容道」是一種中國古代的智力游戲玩具,在一個寬為4,長為5的矩形框中,有10個棋子,包括一個曹操,五虎上將,四個小卒,要求在各個棋子不重疊的情況下進行移動,最有將曹操從棋盤上方移動到下邊中央為成功。由於五員大將可以橫放也可以豎放,有許多種排列方法,因而可以形成非常復雜的棋局,

7、C#編程做3x3的重排九宮格問題

http://pan.baidu.com/s/1gd2BwH1
怎麼這百個這度么版流行啊權

8、vb模擬重排九宮格的小游戲,怎麼實現啊,用文本框可以么。求代碼

文本框可以 我可以使用picture做
需要可以找我
文本框可以 我可以使用picture做
需要可以找我
文本框可以 我可以使用picture做
需要可以找我

9、C++編程,用A*演算法重排九宮圖

昏, 那個不叫九宮圖吧, 那個是螺旋矩陣, 比九宮圖簡單多了:

#include <iostream>
#include <cstring>
using namespace std;

const int size = 200;
int iM2Dimen[size][size];

#define M iM2Dimen

int Digit(int n)
{
int x = 0;

do{
++x;
n /= 10;
}while(n != 0);

return x;
}

void Print(int n)
{
int width = Digit(n*n);
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
cout.width(width);
cout << M[i][j] << ' ';
}
cout << endl;
}
}

void Helix(int n)
{
memset(M, 0, sizeof M);
int iR = -1, iC = -1;
int x = n;

// 把i <= n*n 改成i < n*n 看看
for(int i = 1, j = 0; i <= n*n; ++i)
{
for(++iR, ++iC, j = 0; j < x; ++iC, ++i, ++j)
M[iR][iC] = i;
if(i > n*n)break;
--x;

for(--iC, ++iR, j = 0; j < x; ++iR, ++i, ++j)
M[iR][iC] = i;
if(i > n*n)break;

for(--iR, --iC, j = 0; j < x; --iC, ++i, ++j)
M[iR][iC] = i;
if(i > n*n)break;
--x;

for(++iC, --iR, j = 0; j < x; --iR, ++i, ++j)
M[iR][iC] = i;
if(i > n*n)break;
--i;
}
Print(n);
}

int main()
{
Helix(3);
cout << endl;
Helix(4);
cout << endl;
Helix(5);
cout << endl;
}

測試結果:

1 2 3
8 9 4
7 6 5

1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

與重排九宮游戲攻略相關的攻略