青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

BillyYu

Puzzle Fifteen練習 CS50

關于什么是PuzzleFifteen,參看WIKIPEDIA。
貼下我自己寫的代碼,現在只能是將倒著的順過來,還不知道如何初始化任意的可解的棋局及如何自動破解,歡迎大蝦能提點下。
/***************************************************************************
 * fifteen.c
 *
 * Computer Science 50
 * Problem Set 3
 *
 * Implements The Game of Fifteen (generalized to d x d).
 *
 * Usage: fifteen d
 *
 * whereby the board's dimensions are to be d x d,
 * where d must be in [DIM_MIN,DIM_MAX]
 *
 * Note that usleep is obsolete, but it offers more granularity than
 * sleep and is simpler to use than nanosleep; `man usleep` for more.
 **************************************************************************
*/
 
#define _XOPEN_SOURCE 500

#include 
<cs50.h>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<time.h>
#include 
<unistd.h>


// constants
#define DIM_MIN 3
#define DIM_MAX 9


// global board
int board[DIM_MAX][DIM_MAX];
int d;


// prototypes
void clear();
void greet();
void init();
void draw();
bool move();
bool won();


int
main(
int argc, char *argv[])
{
    
// ensure proper usage
    if (argc != 2)
    {
        printf(
"Usage: %s d\n", argv[0]);
        
return 1;
    }

    
// greet user with instructions
    greet();

    
// ensure valid dimensions
    d = atoi(argv[1]);
    
if (d < DIM_MIN || d > DIM_MAX)
    {
        printf(
"Board must be between %d x %d and %d x %d, inclusive.\n",
               DIM_MIN, DIM_MIN, DIM_MAX, DIM_MAX);
        
return 2;
    }

    
// initialize the board
    init();

    
// accept moves until game is won
    while (true)
    {
        
// clear the screen
        clear();

        
// draw the current state of the board
        draw();

        
// check for win
        if (won())
        {
            printf(
"ftw!\n");
            
break;
        }

        
// prompt for move
        printf("Tile to move: ");
        
int tile = GetInt();

        
// move if possible, else report illegality
        if (!move(tile))
        {
            printf(
"\nIllegal move.\n");
            usleep(
500000);
        }

        
// sleep thread for animation's sake
        usleep(500000);
    }

    
// that's all folks
    return 0;
}


/*
 * void
 * clear()
 *
 * Clears screen using ANSI escape sequences.
 
*/

void
clear()
{
    printf(
"\033[2J");
    printf(
"\033[%d;%dH"00);
}


/*
 * void
 * greet()
 *
 * Greets player.
 
*/

void
greet()
{
    clear();
    printf(
"WELCOME TO THE GAME OF FIFTEEN\n");
    usleep(
2000000);
}


/*
 * void
 * init()
 *
 * Initializes the game's board with tiles numbered 1 through d*d - 1
 * (i.e., fills 2D array with values but does not actually print them).  
 
*/

void
init()
{
    
// TODO
    for(int i = 0; i < d; i++)
        
for(int j = 0; j < d; j++)    
            
// do NOT initialize board[d-1][d-1]
            if((i != d - 1|| (j != d - 1))
                board[i][j] 
= (d - i) * d - j - 1;
            
if(d % 2 == 0)
            {
                board[d
-1][d-2= 2;
                board[d
-1][d-3= 1;
            }
}


/* 
 * void
 * draw()
 *
 * Prints the board in its current state.
 
*/

void
draw()
{
    
// TODO
    for(int i = 0; i < d; i++)
    {
        
for(int j = 0; j < d; j++)
        {
            
if((board[i][j] == 0))
                printf(
"  \t");
            
else
                printf(
"%2d\t",board[i][j]);
        }
        printf(
"\n");
    }
}


/* 
 * bool
 * move(int tile)
 *
 * If tile borders empty space, moves tile and returns true, else
 * returns false. 
 
*/

bool
move(
int tile)
{
    
// TODO
    
//First found the 'tile'
    for(int i = 0; i < d; i++)
        
for(int j = 0; j < d; j++)
            
if(board[i][j] == tile)
            {
                
//validity check
                
//Check up
                if(i - 1 >= 0)
                    
if(board[i-1][j] == 0)
                    {
                        board[i
-1][j] = board[i][j];
                        board[i][j] 
= 0;
                        
return true;
                    }

                
//Check down
                if(i + 1 < d)
                    
if(board[i+1][j] == 0)
                    {
                        board[i
+1][j] = board[i][j];
                        board[i][j] 
= 0;
                        
return true;
                    }

                
//Check left
                if(j - 1 >= 0)
                    
if(board[i][j-1== 0)
                    {
                        board[i][j
-1= board[i][j];
                        board[i][j] 
= 0;
                        
return true;
                    }

                
//Check right
                if(j + 1 < d)
                    
if(board[i][j+1== 0)
                    {
                        board[i][j
+1= board[i][j];
                        board[i][j] 
= 0;
                        
return true;
                    }
            }
    
return false;
}


/*
 * bool
 * won()
 *
 * Returns true if game is won (i.e., board is in winning configuration), 
 * else false.
 
*/

bool
won()
{
    
// TODO
    static int solved[DIM_MAX][DIM_MAX];
    
static int once = 0;
    
if(once == 0)
    {
        
for(int i = 0; i < d; i++)
               
for(int j = 0; j < d; j++)
                   
// do NOT initialize board[d-1][d-1]
                if((i != d - 1|| (j != d - 1))
                       solved[i][j] 
= i * d + j + 1;
        once 
++;
    }

    
for(int i = 0; i < d; i++)
        
for(int j = 0; j < d; j++)
            
if(board[i][j] != solved[i][j])
                
return false;
    
return true;
}


posted on 2011-01-26 00:24 志華 閱讀(1482) 評論(1)  編輯 收藏 引用 所屬分類: C/C++

評論

# re: Puzzle Fifteen練習 CS50[未登錄] 2014-05-04 14:41 kris

學CS50的時候學到week3 做習題的時候頓覺得好難

包括即使在做init的時候都一直出錯,google了一下看到你的答案覺得很好,還在研究測試中,感謝!  回復  更多評論   

<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

導航

統計

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二三| 国产精品一区久久久| 日韩视频在线免费| 亚洲国产精品久久久久婷婷老年 | 欧美精品一卡| 欧美伦理91| 国产精品视频精品视频| 国产一区二区在线免费观看| 韩国视频理论视频久久| 日韩视频免费在线| 午夜在线一区二区| 久久综合99re88久久爱| 亚洲国产精品www| 夜夜夜久久久| 久久久久久久久蜜桃| 美脚丝袜一区二区三区在线观看 | 亚洲一区二区三区中文字幕在线| 亚洲欧美中文在线视频| 久久一综合视频| 欧美午夜激情在线| 亚洲电影激情视频网站| 亚洲一级在线观看| 模特精品裸拍一区| 国产精品99久久不卡二区| 久久久久久久综合色一本| 欧美日韩精品一二三区| 国内精品久久久| 欧美大香线蕉线伊人久久国产精品| 欧美韩国一区| 国内久久婷婷综合| 亚洲午夜国产一区99re久久| 久久不射2019中文字幕| 亚洲激情成人| 乱码第一页成人| 国产日韩欧美一区二区三区在线观看 | 欧美激情二区三区| 国产日韩欧美精品在线| 一本大道av伊人久久综合| 久久久精品五月天| 一区二区福利| 欧美日韩国产综合视频在线观看中文| 国内精品美女av在线播放| 亚洲欧美另类国产| 日韩视频一区二区在线观看| 麻豆九一精品爱看视频在线观看免费| 国产女主播一区二区三区| 亚洲深夜福利| 日韩午夜激情| 欧美精品偷拍| 99精品国产在热久久婷婷| 免费视频久久| 久久久久久一区二区| 国产亚洲欧美一区二区三区| 亚洲中字在线| 亚洲视频二区| 国产精品色婷婷| 欧美亚洲免费在线| 午夜精品成人在线| 国产在线视频欧美一区二区三区| 欧美一区中文字幕| 午夜视频久久久久久| 国产精品夜夜夜| 欧美制服第一页| 亚洲欧美视频在线观看视频| 国产日韩精品入口| 久久综合久久综合久久| 久久免费黄色| 99pao成人国产永久免费视频| 亚洲福利小视频| 欧美日产一区二区三区在线观看| 一区二区高清视频| 亚洲在线视频观看| 一色屋精品视频在线看| 亚洲电影专区| 国产精品户外野外| 久久精品一本| 免费成人av在线| 亚洲天堂偷拍| 新67194成人永久网站| 红桃视频欧美| 亚洲精品小视频| 久久大综合网| 亚洲国产精品一区二区尤物区| 亚洲国产欧美久久| 国产精品久久久久久妇女6080| 久久成人18免费网站| 久久精品一级爱片| 9久re热视频在线精品| 亚洲欧美在线aaa| 亚洲二区在线| 亚洲线精品一区二区三区八戒| 国内一区二区在线视频观看| 亚洲丶国产丶欧美一区二区三区| 欧美日韩国内| 美女视频黄a大片欧美| 欧美丝袜一区二区| 欧美成人性生活| 国产女主播视频一区二区| 欧美激情视频给我| 国产欧美精品日韩区二区麻豆天美| 欧美18av| 国产亚洲精久久久久久| 日韩亚洲一区二区| 亚洲激情av| 久久精品99| 欧美在线免费看| 欧美日韩在线第一页| 老色批av在线精品| 国产欧美视频一区二区| 日韩午夜在线| 亚洲国产精品99久久久久久久久| 亚洲男人的天堂在线aⅴ视频| 亚洲激情图片小说视频| 久久国产88| 久久大综合网| 国产精品入口尤物| 亚洲色图自拍| 亚洲一区免费在线观看| 欧美精品播放| 亚洲欧洲久久| 亚洲精品中文字幕女同| 久久综合五月天婷婷伊人| 久久久国产精品一区二区中文 | 国产精品国产三级国产a| 欧美大片免费观看| 樱花yy私人影院亚洲| 欧美一区国产二区| 欧美一区在线看| 国产精品永久免费视频| 在线视频一区观看| 亚洲在线国产日韩欧美| 欧美日韩伦理在线免费| 最新精品在线| 亚洲三级国产| 欧美精品久久一区二区| 亚洲高清激情| 亚洲毛片av| 欧美日韩精品一区二区三区| 亚洲精品一区二区三区福利| 亚洲理论在线观看| 欧美精品自拍| 这里只有精品在线播放| 亚洲欧美激情在线视频| 国产欧美一区视频| 久久婷婷成人综合色| 欧美成人情趣视频| 日韩视频国产视频| 国产精品国产三级国产aⅴ浪潮| 欧美一区二区三区四区视频| 国产精品视频1区| 欧美亚洲专区| 蘑菇福利视频一区播放| 亚洲人成人一区二区在线观看| 欧美成年人网| 99热这里只有成人精品国产| 午夜精品久久久99热福利| 国产婷婷成人久久av免费高清 | 国产精品美女诱惑| 午夜免费日韩视频| 老司机亚洲精品| 亚洲美女黄网| 国产精品国产三级国产aⅴ9色| 欧美伊人久久久久久久久影院| 欧美99在线视频观看| 在线视频精品一区| 国产一区二区三区丝袜| 欧美a级理论片| 亚洲小视频在线| 另类激情亚洲| 亚洲午夜羞羞片| 在线观看亚洲| 国产精品久久久久久久一区探花| 久久精品一区二区三区四区| 亚洲第一福利视频| 欧美影视一区| 亚洲理伦在线| 黄色av一区| 国产精品区一区二区三| 欧美高清一区| 欧美一区二区三区久久精品| 亚洲人成人一区二区三区| 久久精品1区| 亚洲一二区在线| 亚洲精品欧美精品| 依依成人综合视频| 国产欧美日韩视频| 欧美午夜在线观看| 欧美不卡视频| 久久久久一区二区三区| 亚洲一区在线播放| 亚洲精品视频在线看| 欧美jizzhd精品欧美喷水| 欧美一级精品大片| 亚洲综合色丁香婷婷六月图片| 亚洲人精品午夜在线观看| 伊人春色精品| 伊人成人开心激情综合网| 国产三级欧美三级| 国产精品美女一区二区在线观看| 欧美精品 日韩|