UVA1589象棋 解題過程

2021-09-09 07:39:42 字數 1386 閱讀 8962

我確定了一種思路,就是全域性考慮,把因為紅棋存在而黑棋不能存在的地方在全部標識為1,黑棋可以存在的地方為0,輸入黑棋位置後,確認是否有距離為0或1且可以存在的點,這樣就很好想了

講幾個需要注意的點

這是我在uva上的第乙個**,一開始不是很情願的來到這個專業,覺得自己還是可以學好的,有時候興趣還是不要發展為職業比較好,職業也可以被我很熱愛的呀。

#include

#include

#include

using namespace std;

int map[15]

[15],judgemap[15]

[15],map1[15]

[15],jm1[15]

[15];

int rednum,y,

x;void

check()

if(map[i]

[j]==

'c')

}for

(m=i+

1;m<=

10;m++)}

for(n=j+

1;n<=

9;n++)}

for(n=j-

1;n>=

1;n--)}

}if(map[i]

[j]==

'h')

if(i>=2&&

!map[i-1]

[j])if(

!map[i]

[j+1])

if(j>=2&&

!map[i]

[j-1])

}if(map[i]

[j]==

'g')}}

}void

getinfo()

//錄入資訊

}void

print()

//用於debug

}void

print1()

//用於debug

} int main()

}if(status)

break;}

memcpy

(map,map1,

sizeof

(map));

memcpy

(judgemap,jm1,

sizeof

(jm1));

if(status)

break;}

}if(status)

break;}

printf

("%s\n"

,!status?

"yes"

:"no");

/* print();

cout<}

return0;

}

謝謝大家!

第一次用markdown也不是很熟練

UVA 1589 象棋(模擬)

題目 傳送門 給出乙個象棋的殘局,下一步是黑棋走,判斷黑棋是不是被將死。思路 讀完這個題,知道是乙個模擬題,然後想到用兩個二維陣列來模擬棋盤,乙個 mp陣列 用來存殘局,乙個 res陣列 用來處理紅棋在棋盤上產生的對黑棋的限制。將紅棋的馬 車 炮 將寫成函式來分別處理。這樣處理完之後,判斷一下黑棋的...

UVA 1589 Xiangqi(挖坑待填)

題目無力了,noip考完心力憔悴,想隨便切道題卻碼了250line,而且還是錯的,知道自己 錯了,但特殊情況判起來太煩了,唯一選擇是重構,我卻沒有這勇氣。有空再寫吧,最近真的快瘋了。include int main else printf ac n n n return 0 include char...

UVa 11538 象棋中的皇后

題意 n m的棋盤,有多少種方法放置兩個相互攻擊的皇后?思路 這兩個皇后互相攻擊的方式只有3種,在同一行,在同一列,或在同一對角線。因為每種情況沒有交集,所以可以用加法原理。先考慮同一行,每一行都有 種放法,共有n行,所以就是n m m 1 列與行的情況是相同的。考慮對角線,如圖,從左到右對角線的長...