重點一:可以使用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("剩下可能");
}
}