C#迷你猜数实例分析
本文实例讲述了C#迷你猜数。分享给大家供大家参考。具体如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
namespace迷你猜数
{
classProgram
{
staticvoidMain(string[]args)
{
List<int>LisData=GetData();
LisData=FilterData(LisData,4659,0,1);
LisData=FilterData(LisData,8763,0,1);
LisData=FilterData(LisData,1035,0,1);
LisData=FilterData(LisData,3249,1,1);
LisData=FilterData(LisData,0497,0,2);
LisData=FilterData(LisData,9148,0,2);
foreach(varnuminLisData)
{
Console.WriteLine(num);
}
Console.ReadKey();
}
///<summary>
///获取所有可用数据
///</summary>
///<returns></returns>
privatestaticList<int>GetData()
{
List<int>LisData=newList<int>();
for(inti=0;i<10;i++)
{
for(intj=0;j<10;j++)
{
for(intk=0;k<10;k++)
{
for(intm=0;m<10;m++)
{
if((i!=j)&&(i!=k)&&(i!=m)&&(j!=k)&&(j!=m)&&(k!=m))
{
LisData.Add(i*1000+j*100+k*10+m);
}
}
}
}
}
returnLisData;
}
privatestaticList<int>FilterData(List<int>LisData,intNum,inta,intb)
{
List<int>lisDataNum=newList<int>();
int[]LisNum=newint[4];
//将Num拆分成一个数组
int[]Numnum=SplitNum(Num);
foreach(varDatainLisData)
{
intaNum=0;
intbNum=0;
//将Data拆分成一个数组
LisNum=SplitNum(Data);
#region求a,b的个数
for(inti=0;i<4;i++)
{
//求a的个数
if(Numnum[i]==LisNum[i])
{
aNum++;
}
//求b的个数
for(intj=0;j<4;j++)
{
if(Numnum[i]==LisNum[j])
{
bNum++;
}
}
}
bNum-=aNum;
#endregion求a,b的个数
//判断a,b
if((aNum==a)&&(bNum==b))
{
lisDataNum.Add(Data);
}
}
returnlisDataNum;
}
///<summary>
///拆分四位数
///</summary>
///<paramname="Num"></param>
///<returns></returns>
privatestaticint[]SplitNum(intNum)
{
int[]Numnu=newint[4];
for(inti=0;i<4;i++)
{
Numnu[i]=Num%10;
Num=Num/10;
}
returnNumnu;
}
}
}
希望本文所述对大家的C#程序设计有所帮助。