91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 15KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-28
  • 語言: 其他
  • 標簽: Linux??2048??

資源簡介

Linux2048(詳細注釋版-驗證可運行)

資源截圖

代碼片段和文件信息

//?add?your?header?comment?here

#include?
#include?
#include?
#include?
#include?
//?put?any?extra?includes?here?but?don‘t?delete?the?ones?above

#define?SIZE????4

//?add?your?function_prototypes?here

//?The?functions?moveLeft?moveRight?moveUp?moveDown
//?return?-1?if?the?specified?moving?of?numbers??is?not?possible.
//?Otherwise?they?move?the?numbers?as?indicated?and?return
//?the?change?to?the?score?from?combining?adjacent?identical?numbers.
//?They?return?0?if?no?numbers?were?combined.

/*
????題目的意思是這樣的,需要‘嚴格’判斷能否移動,我用flag標示移動的時候在第二個判斷的時候出錯了!

????拿下移為例,if(cell==0)的時候直接判斷可以移動是錯誤的,當下移的時候,如果只有

????上面第一行的某一個元素為0,下面所有行不出現(xiàn)合并的情況下是不能下移的。

????????所以在上下左右移動的過程中,當if(cell==0)即當前元素為0時要使得能夠移動,就必須限制這個為0的

????元素不是上面第一行(下移時)、左側第一列(右移)、右側第一列(左移)、下面第一行(上移)、

????????所以修改每個move函數(shù)中判斷if(cell==0)代碼的i或者j的循環(huán)條件,以避開判斷時0所在的特殊行位置

????????具體修改看下面部分注釋(修改的只有每個move函數(shù)中第二個for循環(huán)中的i或者j的循環(huán)條件)

*/

/**************************************移動判斷部分*****************************************/
int?moveLeft(int?board[SIZE][SIZE])?{
????int?ijscore=0flag=-1;
????for(i=0;i????{
????????for(j=0;j????????{
????????????int?cell=board[i][j];//cell單詞用的不太恰當,表示當前元素,你可以采用更有意義的命名
????????????if(cell!=0)//當前格子不為空
????????????{
????????????????int?k=j+1;
????????????????while(k????????????????{
????????????????????int?nextcell=board[i][k];//現(xiàn)在nextcell為cell左邊的一個元素
????????????????????if(nextcell!=0)
????????????????????{
????????????????????????if(cell==nextcell)
????????????????????????{
????????????????????????????flag=0;//相鄰兩個元素相同,就說明能移動,所以改變flag的值
????????????????????????????board[i][j]+=board[i][k];
????????????????????????????score+=board[i][j];
????????????????????????????board[i][k]=0;
????????????????????????}
????????????????????????k=SIZE;//跳出雙重循環(huán)(機智)
????????????????????????break;
????????????????????}
????????????????????k++;
????????????????}
????????????}
????????}
????}

????//修改部分:for循環(huán)中的i或者j的循環(huán)條件

????for(i=0;i????{
????????for(j=0;j????????{
????????????int?cell=board[i][j];
????????????if(cell==0)//如果當前格子是空的
????????????{
????????????????int?k=j+1;
????????????????while(k????????????????{
????????????????????int?nextcell=board[i][k];
????????????????????if(nextcell!=0)//直到找到一個元素
????????????????????{
????????????????????????flag=0;//
????????????????????????board[i][j]=nextcell;//把那個元素移動到當前
????????????????????????board[i][k]=0;//把被移動元素的原位置上清空
????????????????????????k=SIZE;//直接跳出循環(huán)
????????????????????}
????????????????????k++;
????????????????}
????????????}
????????}
????}
????if(flag!=-1)
????????return?score;
????else
????????return?-1;
}

int?moveRight(int?board[SIZE][SIZE])?{
????int?ijscore=0flag=-1;
????for(i=0;i????{
????????for(j=SIZE-1;j>=0;j--)
????????{
????????????int?cell=board[i][j];
????????????if(cell!=0)
????????????{
??

評論

共有 條評論