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#程序设计有所帮助。