看板 C_Sharp 關於我們 聯絡資訊
※ 引述《meteor009 (椰子)》之銘言: : 已爬文 : 玩法:電腦猜數字(4位數,數字不重複) : 使用者給幾A幾B : 我的做法: : 一開始把電腦可能的答案(0123~9876,去除中間重覆的數字)存到一個陣列裡 : ↑使用list<String> : 第一次隨便Random一個出來,然後使用者給?A?B : 接著就出現問題了...Orz : 我不知道該怎麼讓電腦根據使用者給的?A?B去可能的答案陣列中剔除不符合的數字 : 然後再從剩餘的數字陣列中Random出一個數字作為答案 : 麻煩板上的高手大大救救我 T___T : 先感謝大家了~ //數字候選資料在numList中 //當候選資料數量小於1時跳出 while(numList.count>1){ //電腦亂數挑的範圍(亂數範圍:0~numList.count) targetNum = numList[(亂數)]; //使用者判斷AB的個數 inputA = (使用者輸入A); inputB = (使用者輸入B); //跑過所有numList中的數字 for(int i = 0 ; i <numList.count;i++) { //比對的數字 num = numList[i]; //計算num中的A數量 A = 0; for(int j = 0 ; j <4; j++) { //比對同一位置的數字是否相等 if(num[j].equal(targetNum[j])) { A++; } } //計算num中B的數量 for(int j = 0 ; j <4; j++) { //對於num中所有不同位置的數字去比對 for(int k=0 ; k < 4 ; k++) { //如果num中有數字等於targetNum[j] 則B+1 且跳出 if(num[k].equal(targetNum[j])) { B++; break; } } }//end inner for //num不符合AB條件 從資料列中移除 if(!A.equal(inputA)||!B.equal(inputB)) { numList.remove(i); } }// End outter for }//End while //numList最後剩下的數字就是了 if(numList.count.equal(1)) { //numList[0]就是解 } //List中無資料 錯誤 if(numList.count.equal(0)) { //使用者給錯資訊 } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.53.147 ※ 編輯: BETNPP 來自: 140.115.53.147 (12/14 16:17)