2007
12-11

十五谜问题


程序设计要求:在一个4 x 4的方形棋盘上放置了15块编了号的牌,还剩下一个空格(如图1所示)。棋盘上号牌的一次合法移动是指将位于空格四周(上,下,左,右)的一块号牌移入空格位置的四种移动方式。设初始状态如图1所示,要求经过最少次数的合法移动转换成如图2所示的目标状态,请显示空白块移动的过程。


 1  2  3  4


 5  6     8


 9 10  7  11


13 14 15  12      


 (图1)


  1   2   3   4


  5   6   7   8


  9   10  11  12


  13  14  15 


十五谜问题》有 4 条评论

  1. leef 说:

    谁有C语言的DES 加密算法并且能和JAVA 交互的?感激不尽

  2. head1 说:

    连个回复的都没有!!!失望

    看看我的代码吧!

    #include <iostream>
    using namespace std;

    void Display();

    int a[16] = {1,2,3,4,5,6,0,8,9,10,7,11,13,14,15,12};

    void main()
    {
     Display();
     int j = 0;
     for(int i = 0; i < 3; i++)
     {
     while(a[j] != 0)
     {
     j++;
     }
     a[j] = a[j-1] + 1;
     int num = a[j];
     while(a[++j] != num)
     ;
     a[j] = 0;
     Display();
     }
     char ch;
     cin >> ch;
    }

    void Display()
    {
     for(int i = 0; i < 4; i++)
     {
     for(int j = 0; j < 4; j++)
     {
     if(a[i*4+j] == 0)
     {
     cout << ” ” << ‘\t’;
     }
     else
     {
     cout << a[i*4+j] << ‘\t’;
     }
     }
     cout << endl;
     }
     cout << endl;
    }

  3. 将C进行到底 说:

    恩,挺有意思。

    不过可能定义个二维数组好些! 同意吗?

  4. head1 说:

    二维数组?a[4][4],恩,可以吧

留下一个回复