g u y c o h e n
New member
בעייה באלגוריתם
ישנו מערך דו מימדי אשר בו יש זוגות של מספרים שווים, זוגות התאים נבחרים רנדומלית, כל תא שכבר נבחר לו מספר לא יוכל להיבחר שוב. הבעייה היא שנראה שלפעמים לוקח למחשב יותר מדי זמן עד שכל התאים מתמלאי.
ישנו מערך דו מימדי אשר בו יש זוגות של מספרים שווים, זוגות התאים נבחרים רנדומלית, כל תא שכבר נבחר לו מספר לא יוכל להיבחר שוב. הבעייה היא שנראה שלפעמים לוקח למחשב יותר מדי זמן עד שכל התאים מתמלאי.
void CMainFrame::InitItemsValues() { BOOL flags[SIZE][SIZE] = {FALSE}; int num, pos1_1, pos1_2, pos2_1, pos2_2; srand((unsigned)time(NULL)); // random seed for (int i = 0, times = SIZE * SIZE / 2 ; i < times; i++) // number of couples // lines { while(1) { num = rand() % 9 + 1; pos1_1 = rand() % SIZE; pos1_2 = rand() % SIZE; if (!flags[pos1_1][pos1_2]) { pos2_1 = rand() % SIZE; pos2_2 = rand() % SIZE; if ((!flags[pos2_1][pos2_2]) && (pos1_1 != pos2_1) && (pos1_2 != pos2_2)) { m_Items[pos1_1][pos1_2].value = num; m_Items[pos1_1][pos1_2].hidden = TRUE; // hidden status m_Items[pos1_1][pos1_2].enable = TRUE; m_Items[pos2_1][pos2_2].value = num; m_Items[pos2_1][pos2_2].hidden = TRUE; // hidden status m_Items[pos2_1][pos2_2].enable = TRUE; flags[pos1_1][pos1_2] = TRUE; flags[pos2_1][pos2_2] = TRUE; break; } } } } }
האם יש אלגורית יעיל יותר ?