現在我試圖做一個函數,檢查用戶的選擇是否已經在數組中,如果它確實會告訴你選擇一個比較數。我怎樣才能做到這一點?沒有重複功能的彩票程序
0
A
回答
1
你的意思是這樣的嗎?
bool CheckNumberIsValid()
{
for(int i = 0 ; i < array_length; ++i)
{
if(array[i] == user_selection)
return false;
}
return true;
}
這應該給你一個線索,至少。
0
如果確實需要數組,您需要迭代或使用算法頭的find函數。那麼,我建議你去把號一組作爲外觀上升快於集和方便的使用設置::發現功能
裁判:stl set
0
這些都是一些步驟(僞代碼,因爲這是一個作業問題),你可能會這樣做:
- 獲取用戶輸入一個新號碼。
- 如果輸入的數字是第一個,無論如何都將它推到矢量上。
- 在大小大於1的情況下對向量的內容進行排序。
- 要求用戶輸入數字。
- 對內容執行二進制搜索以查看是否輸入了數字。
- 如果數字是唯一的,則將其推入矢量中。如果不是唯一的,再問一次。
- 轉到步驟3
HTH,
斯利拉姆。
1
std::find
有什麼不對?如果返回end
迭代器,則 值不在數組中;否則,它是。或者如果這是作業,並且 你不允許使用標準庫,那麼一個簡單的while循環 應該做的竅門是:這是一個標準的線性搜索算法,可以在任何地方找到 。 (在另一方面,一些文章 與谷歌搜索時彈出的是相當糟糕,你真的 應使用標準執行:。
Iterator
find(Iterator begin, Iterator end, ValueType target)
{
while (begin != end && *begin != target)
++ begin;
return begin;
}
簡單,有效,並且證明工作)
1
[加了後事]哦,作業標籤。好吧,它不會真的讓你受益太多,但 - 我會留下我的答案,因爲它可以用於瀏覽SO的其他人。
如果你需要有很多獨特的隨機數的範圍 - 從0..45100
說45000張的隨機數 - 那麼你應該看到這是怎麼回事使用的方法以獲得問題:
while (size_of_range > v.size()) {
int n = // get random
if (/* n is not already in v */) {
v.push_back(n);
}
}
如果池的大小和你想獲得的範圍接近,並且池大小不是一個非常小的整數 - 那麼得到一個尚未放入向量/數組的隨機數就會變得越來越難。 在這種情況下,你會感到非常的使用std::vector
的更好(在<vector>
)和std::random_shuffle
(在<algorithm>
):
unsigned short start = 10; // the minimum value of a pool
unsigned short step = 1; // for 10,11,12,13,14... values in the vector
// initialize the pool of 45100 numbers
std::vector<unsigned long> pool(45100);
for (unsigned long i = 0, j = start; i < pool.size(); ++i, j += step) {
pool[i] = j;
}
// get 45000 numbers from the pool without repetitions
std::random_shuffle(pool.begin(), pool.end());
return std::vector<unsigned long>(pool.begin(), pool.begin() + 45000);
可以明顯地使用任何類型的,但你需要相應的初始化向量,所以它會包含你想要的所有可能的值。
請注意,如果您確實需要池中幾乎所有的數字,則內存開銷可能無關緊要,您將獲得良好的性能。使用rand()
和檢查將花費大量時間,如果您的RAND_MAX
等於32767
那麼它將是一個無限循環。 但是,如果您只需要這些值中的幾個,內存開銷就會顯着。第一種方法通常會更快。
相關問題
- 1. Python - 所有彩票組合 - 沒有重複,爲了
- 2. 沒有重複的彩票號碼發生器
- 3. 蘭特數彩票程序
- 4. Java彩票排列程序
- 5. 沒有陣列與java的彩票程序
- 6. JButtons和Action Listener的彩票程序
- 7. python threading.timer沒有重複功能
- 8. 如何在程序中重複功能
- 9. C++創建彩票猜測程序
- 10. 如何優化PHP中的「彩票」功能?
- 11. 在MATLAB中有沒有R的「重複」類似的功能?
- 12. 將返回重複彩票號碼的SQL查詢
- 13. 重複功能
- 14. 重複功能
- 15. 重複功能
- 16. 重複功能
- 17. 在C中重複程序功能失敗,scanf有關嗎?
- 18. 不等重的隨機彩票
- 19. 程序和功能中沒有修復選項
- 20. 有沒有重複瀏覽器/鍵盤功能的優點?
- 21. 的Java,彩票calculuator
- 22. 彩票方法
- 23. 投票重複投票
- 24. 單獨的功能沒有重複的代碼
- 25. 所有可能的行沒有重複
- 26. Android應用程序能否重複「自動旋轉」功能?
- 27. es6-箭頭功能 - 沒有重複的命名參數
- 28. [R重複功能
- 29. Javascript重複功能
- 30. 產生儘可能多的序列49/6彩票
爲什麼殘酷的力量?嘗試確定數組是否先排序,如果是,則二分法搜索將更有效率 – amit 2011-05-11 07:39:02
@amit:因爲它是一個用戶界面。這個功能已經工作了幾千倍。 – TonyK 2011-05-11 07:46:42
鑑於問題的背景以及它包含「作業」作爲標籤的事實,我認爲這是最直接的,因此也是適當的迴應。二進制搜索對於這裏所要求的內容是過分的,可能會讓他/她的老師感到困惑。 – acron 2011-05-11 07:46:59