#44296: C/C++ 提示 (想要解答別案,先說清楚無解答)


yp11351225@yphs.tp.edu.tw (710-42葛雨樂)

學校 : 臺北市私立延平高級中學
編號 : 276265
來源 : [203.72.178.1]
最後登入時間 :
2024-11-12 17:12:34
d057. 11494 - Queen -- UVa11494 | From: [203.72.178.1] | 發表日期 : 2024-11-21 17:39

重點一:可以使用C或C++喔!

C可以使用scanf,方式為:

記得:需引入<stdio.h>

1.有幾個輸入值回傳值(return)就是幾,例如:scanf("%d%d%d%d", &a,&b,&c,&d") 回傳值就是四,若輸入EOF(Ctrl^Z)則回傳-1(讀到檔案結尾)

2.記得若輸入四個零不代表EOF,故還是要判斷是否皆為零(if else 即可。)

3.使用scanf時%d是輸入數字,%c是輸入字元,%s是輸入字串 (digit / character / string)

4.如果使用C語言則不須打using namespace std;因為不會用到cout、cin、或endl函式。

C++則使用:

1.引入iostream或bits/stdc++.h

2.記得cin可以連續輸入

3.cout要加endline

 

重點二:確認觀念

觀念一:因為女王(queen)可以走橫的或是直的,故兩步內必定到達

觀念二:若在對角線則一步可到達

觀念三:由輸入範例可知,兩者座標位置可能相等

觀念四:跟平常座標平面不同:先寫「y座標」(列) 才寫「x座標」(行)

 

重點三:判斷步數

將可能性分成以下三種:

一、零步

       狀況:原點座標與移動到的座標相等。

       判斷:x1==x2 且 y1==y2

      此時輸出0。

二、一步

       狀況:兩者在同對角線或同線上。

       判斷:abs(x1-x2)=abs(y1-y2)

       此時輸出1。

       說明:當x的差距=y的差距時,則兩點在同對角線或同線上,故一步可走到。仍然,切記題目沒有保證x1>x2且y1>y2,故可用表示距離的絕對值來推算。

三、兩步

       狀況:非零步或兩步。兩者不再同點或同對角線、同線上。

       判斷:使用if else if後else填入。

       此時輸出2。

       說明:先走到同一行,再走到同一列即到達。

 

因使用絕對值,故要引入<cmath>

 

若要更多提示,下列為填空:

#include<stdio.h>
#include<絕對值的資料庫>
using namespace std;
int main() {
    int 四個座標變數;
    while(scanf("資料型態", 哪四個變數)==回傳值) {
        if(四個都輸入零) 結束程式;
        if(兩者在同一點) printf("0\n");
        else if(同行、同列、或同對角線) printf("1\n");
        else printf("剩下可能");
    } 
}

 

 
ZeroJudge Forum