作者BETNPP (NPP)
看板C_Sharp
标题Re: [问题] 电脑猜数字
时间Mon Dec 14 16:15:11 2009
※ 引述《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)