當前位置:首頁 » 操作系統 » 九宮重排演算法

九宮重排演算法

發布時間: 2022-03-12 21:17:22

⑴ 求重排九宮的演算法

我現在的想法就是開一個9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9的數組保存狀態,進行基於狀態的寬度優先搜索,每次相當於移動空格,我再想想吧。。。

⑵ C++編程,用A*演算法重排九宮圖(eight-puzzle)

POJ 有原題

⑶ 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

⑷ 九宮格的計算公式是什麼

九宮格的計算公式為:二四為肩, 六八為足, 上九下一, 左七右三。

例如:2 9 4
7 5 3
6 1 8

⑸ 九宮格的規律

九宮格游戲規則,1至9九個數字,橫豎都有3個格,思考怎麼使每行、每列兩個對角線上的三數之和都等於15。

第一種是在在3×3方格盤上,是把1至8八個小木塊隨意擺放,每一空格其周圍的數字可移至空格。玩者要將小木塊按12345678的順序重新排好,以最少的移動次數拼出結果者為勝。

第二種玩法如九宮格算術游戲玩法,推動木格中8個數字排列,橫豎都有3個格,使每行、每列兩個對角線上的三數之和都等於15。

(5)九宮重排演算法擴展閱讀

第一大行:由第一宮、第二宮、第三宮組成。

第二大行:由第四宮、第五宮、第六宮組成。

第三大行:由第七宮、第八宮、第九宮組成。

第一大列:由第一宮、第四宮、第七宮組成。

第二大列:由第二宮、第五宮、第八宮組成。

第三大列:由第三宮、第六宮、第九宮組成。

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

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

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

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

一:

(7)九宮重排演算法擴展閱讀

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

⑻ 重排九宮問題(用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.Of(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;
}
}
}
//遞歸演算法。超慢。。。。

⑼ 3x3重排九宮問題

這個是標準的圖片靠空格移動的自解。 空格只是一個量而已。你可以用0代替,也可以用8代替。 初始化得改改。

熱點內容
伺服器的空島如何刷錢 發布:2024-11-15 09:40:52 瀏覽:262
安卓系統錄像設置在哪裡 發布:2024-11-15 09:36:33 瀏覽:917
電信級伺服器電腦 發布:2024-11-15 09:26:27 瀏覽:246
壓縮某個文件夾 發布:2024-11-15 09:03:11 瀏覽:891
網址能解壓嗎 發布:2024-11-15 08:54:09 瀏覽:933
python更改目錄 發布:2024-11-15 08:41:08 瀏覽:265
伺服器快閃記憶體可以裝在一般電腦上嗎 發布:2024-11-15 08:36:46 瀏覽:8
安卓手機怎麼查詢自己的路線軌跡 發布:2024-11-15 08:32:19 瀏覽:969
phpdatet 發布:2024-11-15 08:32:17 瀏覽:507
HDB3編解碼實驗 發布:2024-11-15 08:17:31 瀏覽:212