內容會持續更新,有錯誤的地方歡迎指正,謝謝!
遊戲裡面有很多各式各樣的任務,其中有一種任務玩家只能做一次,這類任務一共有1024個,任務id範圍[1,1024]。請用32個unsigned int型別來記錄著1024個任務是否已經完成。初始狀態都是未完成。 輸入兩個引數,都是任務id,需要設定第乙個id的任務為已經完成;並檢查第二個id的任務是否已經完成。 輸出乙個引數,如果第二個id的任務已經完成輸出1,如果未完成輸出0。如果第一或第二個id不在[1,1024]範圍,則輸出-1。
輸入描述:
輸入包括一行,兩個整數表示人物id.
輸出描述:
輸出是否完成
輸入例子1:
1024 1024
輸出例子1:
1輸入例子2:
1021 1024
輸出例子2:
0unsigned int為32位,32個unsigned int為32*32=1024位,剛好可以存1024個1/0資料。所以,用位圖(bitmap)來做。
位圖基礎知識請見:
#include
#include
#define n 1024
using
namespace
std;
int main()
//32*32=1024,32個unsigned int剛好可以存放1024個1、0資料
unsigned
int arr[32];
/*位運算
arr[(id1-1)>>5]:先將[1,1024]變成[0,1023],所以id1-1
再把id1-1除以32,也就是右移5位,得到id1-1在arr中的索引號
把id1-1對32求餘,也就是&31(對於2的冪才能這樣幹),得到其
在該索引中的位號,在將1移動該位號的長度,再把arr[(id1-1)>>5]
和(1<<(id1-1)&31)做或運算,最後複製給等式左邊。*/
arr[(id1-1)>>5]|=(1
<<((id1-1)&31));
//拿id2來驗證是否已完成該任務
cout
<< ((arr[(id2-1)>>5]&(1
<<((id2-1)&31)))!=0) 0;}
#include
#include
int main()
}return
0;}
騰訊 遊戲任務標記1024
遊戲裡面有很多各式各樣的任務,其中有一種任務玩家只能做一次,這類任務一共有1024個,任務id範圍 1,1024 請用32個unsigned int型別來記錄著1024個任務是否已經完成。初始狀態都是未完成。輸入兩個引數,都是任務id,需要設定第乙個id的任務為已經完成 並檢查第二個id的任務是否已...
2017校招 遊戲任務標記
題目描述 遊戲裡面有很多各式各樣的任務,其中有一種任務玩家只能做一次,這類任務一共有1024個,任務id範圍 1,1024 請用32個unsigned int型別來記錄著1024個任務是否已經完成。初始狀態都是未完成。輸入兩個引數,都是任務id,需要設定第乙個id的任務為已經完成 並檢查第二個id的...
牛客網 遊戲任務標記
遊戲裡面有很多各式各樣的任務,其中有一種任務玩家只能做一次,這類任務一共有1024個,任務id範圍 1,1024 請用32個unsigned int型別來記錄著1024個任務是否已經完成。初始狀態都是未完成。輸入兩個引數,都是任務id,需要設定第乙個id的任務為已經完成 並檢查第二個id的任務是否已...