1. 程式人生 > >UVA 1589 象棋

UVA 1589 象棋

題目大意:判斷是否將死黑棋

題目分析:模擬題,不難,記錄下被將的位置,判斷將移動位置是否全被將,但是細節注意較多,wa了很多次。

注意要點:1.將和帥直接對位,紅棋直接輸,故輸出NO。 2.如果某被將位置有棋,也應判斷被將,因為將可能把該棋吃掉。3.先全記錄下棋子位置,再進行判斷。(這裡挖了很多次)

AC程式碼:

#include<stdio.h>
#include<cstring>
#include<string>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector> #include<map> using namespace std; int gx[5]={0,0,0,-1,1},gy[5]={0,1,-1,0,0}; int hx[9]={0,2,2,1,1,-1,-1,-2,-2},hy[9]={0,1,-1,2,-2,2,-2,1,-1}; int tx[9]={0,1,1,0,0,0,0,-1,-1},ty[9]={0,0,0,1,-1,1,-1,0,0}; int a[20][20]={0}; bool horse(int x1,int y1,int i) { int x,y; x=x1+hx[i]; y=y1+hy[i];
if (x<1 || x>10 || y<1 || y>9) return 0; x=x1+tx[i]; y=y1+ty[i]; if (a[x][y]==1) return 0; return 1; } int main() { int n,x,y; cin >> n >> x >> y; while(n!=0) { int h[20][20]={0},ax[20],ay[

相關推薦

UVA-1589 象棋(模擬)

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

UVA 1589 象棋

題目大意:判斷是否將死黑棋 題目分析:模擬題,不難,記錄下被將的位置,判斷將移動位置是否全被將,但是細節注意較多,wa了很多次。 注意要點:1.將和帥直接對位,紅棋直接輸,故輸出NO。 2.如果某被將位置有棋,也應判斷被將,因為將可能把該棋吃掉。3.先全記錄下棋子

UVA - 1589 —Xiangqi (思路&&模擬)

連結: https://cn.vjudge.net/problem/UVA-1589 題意: 黑方只有一個帥,給出黑方帥的座標,紅方可能有車/炮和馬,問當前黑方是否被將死。 思路: 見程式碼 程式碼目前是錯的,但思路正確,有時間再改 #include <bits

UVA - 1589 Xiangqi

Xiangqi  UVA - 1589  題目傳送門 解決方法:判斷黑棋是否能有可以下的地方 AC程式碼: #include <cstdio> #include <iostream> #include <algorithm&g

Uva 1589 Xiangqi 判斷是否將死

UVa 1589 Xiangqi 簡單分析 題目是讓我們檢查紅方是不是把黑方將死 首先要考慮黑方是不是已經和紅方見面,如果見面了,黑方直接勝利 接下來就要考慮每個紅子可以走的地方了,其中要注意黑方將可能會吃掉紅子,所以我用了兩個二維陣列,一個儲

UVa 11538 象棋中的皇后

    最近發現自己沒有什麼長進,一直在徘徊中,發現自己的知識儲備太少,簡直菜的不行,目前在看組合數,排列,加法,乘法,容斥原理。 題目通過三個方面考慮: 同一行放兩個皇后的方案數為A(n,m);                    同一列放兩個皇后的方案數為B(n,

UVa 11149 矩陣的冪(矩陣倍增法模板題)

ble 化簡 .cn target ans txt put std net https://vjudge.net/problem/UVA-11149 題意: 輸入一個n×n矩陣A,計算A+A^2+A^3+...A^k的值。 思路: 矩陣倍增法。

UVA - 434 Matty&#39;s Blocks

mes [0 () block += tty scan 一個 ems 題意:給你正視和側視圖,求最多多少個,最少多少個 思路:貪心的思想。求最少的時候:由於能夠想象著移動,盡量讓兩個視圖的重疊。所以我們統計每一個視圖不同高度的個數。然後計算。至於的話。就是每次拿正視圖的

UVA 11997 K Smallest Sums 優先隊列 多路合並

algorithm span 大白 while logs truct %d 算法 省賽   vjudge 上題目鏈接:UVA 11997   題意很簡單,就是從 k 個數組(每個數組均包含 k 個正整數)中各取出一個整數相加(所以可以得到 kk 個結果),輸出前 k 小的和

UVA 567 Risk【floyd】

art printf ios org std span app process iostream 題目鏈接: option=com_onlinejudge&Itemid=8&page=show_problem&problem=5

uva 1585

cout clu cnblogs push uva i++ namespace cin str #include <bits/stdc++.h> using namespace std; int main() { int k; cin>&

UVA 1584 環狀序列

-- 開頭 給定 字典 字典序 clu cout con sca 題意: 給定一個環狀字符串,輸出字典序最小的線裝字符串。 分析: 我一開始是將原字符串*2去模擬環,然後分別截取以字符串不同字母為首的子串,然後用sort去排序輸出最小的串,復雜度為O(n^2 + nlogn

Marvelous Mazes UVA - 445

累加 == return include printf str string iostream log #include<iostream> #include<stdio.h> #include<string> #include<

紫書第五章訓練 uva 10763 Foreign Exchange by crq

evo pan hang n) 情況 sed 是否 for ear Your non-profit organization (iCORE - international Confederation of Revolver Enthusiasts) coordinates

UVA 10129 Play on Words

bool seq lis rest ble u+ contains con sync Some of the secret doors contain a very interesting word puzzle. The team of archaeologists ha

【組合計數】UVA - 11538 - Chess Queen

bre cpp name using blog ios log return algorithm 考慮把皇後放在同一橫排或者統一縱列,答案為nm(m-1)和nm(n-1),顯然。 考慮同一對角線的情況不妨設,n<=m,對角線從左到右依次為1,2,3,...,n-1,n

UVA 12563(Jin Ge Jin Qu hao)

case class 利用 i++ its 價值 con == 節省空間 開始認真學DP。我對滾動數組的理解是:後一個狀態可以由前一個狀態求得,便可以使用一維數組重復利用節省空間復雜度。 這個題要註意題目要求的前提,求次數可以看作重量為v[i]價值為1放入w-1的背包,歌曲

POJ 3294 UVA 11107 Life Forms 後綴數組

ise -c orm pac str lap sizeof true n-1 相同的題目,輸出格式有區別。 給定n個字符串,求最長的子串,使得它同時出現在一半以上的串中。 不熟悉後綴數組的童鞋建議先去看一看如何用後綴數組計算兩個字符串的最長公共子串 Ural1517 這道題

【Java】【滾動數組】【動態規劃】UVA - 11137 - Ingenuous Cubrency

得到 lose math scanner light clas details 狀態 ann 滾動數組優化自己畫一下就明白了。 http://blog.csdn.net/u014800748/article/details/45849217 解題思路:本題利用遞推關系解決。

UVa 10651 Pebble Solitaire(DP 記憶化搜索)

src output one row max -s turn -- nth Pebble Solitaire Pebble solitaire is an interesting game. This is a game where you are given