C#迷你猜数实例分析

本文实例讲述了C#迷你猜数。分享给大家供大家参考。具体如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 迷你猜数
{
 class Program
 {
  static void Main(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(var num in LisData)
   {
    Console.WriteLine(num);
   }
   Console.ReadKey();
  }
  /// <summary>
  /// 获取所有可用数据
  /// </summary>
  /// <returns></returns>
  private static List<int> GetData()
  {
   List<int> LisData = new List<int>();
   for (int i = 0; i < 10; i++)
   {
    for (int j = 0; j < 10; j++)
    {
     for (int k = 0; k < 10; k++)
     {
      for (int m = 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);
       }
      }
     }
    }
   }
   return LisData;
  }
  private static List<int> FilterData(List<int> LisData,int Num,int a,int b)
  {
   List<int> lisDataNum=new List<int>();
   int[] LisNum = new int[4];
   //将Num拆分成一个数组
   int[] Numnum = SplitNum(Num);
   foreach(var Data in LisData)
   {
    int aNum = 0;
    int bNum = 0;
    //将Data拆分成一个数组
    LisNum = SplitNum(Data);
    #region 求a,b的个数
    for (int i=0;i<4;i++)
    {
     //求a的个数
     if(Numnum[i]==LisNum[i])
     {
      aNum++;
     }
     //求b的个数
     for(int j=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);
    }
   }
   return lisDataNum;
  }
  /// <summary>
  /// 拆分四位数
  /// </summary>
  /// <param name="Num"></param>
  /// <returns></returns>
  private static int[] SplitNum(int Num)
  {
   int[] Numnu = new int[4];
   for (int i = 0; i < 4; i++)
   {
    Numnu[i] = Num % 10;
    Num = Num / 10;
   }
   return Numnu;
  }
 }
}

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#实现漂亮的数字时钟效果

    本文实例讲述了用C#做了一个漂亮的数字时钟.分享给大家供大家参考. 程序运行后界面如下: 实现技术:主要是通过Graphics类的DrawImage方法来绘制数字时钟中所有的数字,这些数字是从网上找的一些图片文件.时钟使用DateTime中Now属性来获得不同的,时,分,秒,最后通过定时器来实现时钟的运行状态. 主要代码如下: 复制代码 代码如下: //将0~9数字图片保存在Image数组中  private Image[] image = new Bitmap[10];  public For

  • C# WinForm窗体编程中处理数字的正确操作方法

    使用C#进行WinForm开发时,经常需要从WinForm窗体中获取用户输入数据.如果是字符串,那很好办,直接使用"控件名.Text"即可.但如果是数字类型的值呢?怎么样获取?怎么样判断?怎么样转换?怎么样错误提示?且看下文. 假如我要从WinForm界面上获取一个用户输入的数字,代码如下: 复制代码 代码如下: int num; //定义一个int类型的变量来接收值 //假设接收用户输入的文本框控件名称为"txtNum",txtNum.Text为字符串类型. //

  • C#实现在两个数字之间生成随机数的方法

    本文介绍一个小编自己写的C#函数,它用于生成两个数之间的一个随机数. 在C#中有一个Random类,使用它可以很方便的生成随机数.其实一个最重要的生成方式就是给它一个最大值和一个最小值,系统可以自动生成该范围内的一个随机数字. 在创建Random对象的时候,需要赋值一个随机数种子.随机数种子是什么含义本文就不介绍了,反正如果没有种子,那么每次得到的随机数会是同一个随机数(很扯蛋是吧).这里我们使用Guid类的NewGuid()方法来造一个随机的字符吕,而且这个字符串是不会相同的.这个Guid的随

  • C#验证给定字符串是否为数字的方法

    本文实例讲述了C#验证给定字符串是否为数字的方法.分享给大家供大家参考.具体分析如下: 这段C#代码用于验证给定的字符串是否为数字,不能用于验证负数,字符串中只能出现数字和小数点,否则认为不是数字,不验证数字的长度,也就是说,给定的字符串再长,哪怕是1万个字符,也可以通过验证,所以通过验证的字符串不一定能转换成C#的int类型和Int64类型. /// <summary> /// 验证是否为数字 /// </summary> /// <param name="num

  • C#识别出图片里的数字和字母

    一个图片识别小工具,原先主要是识别以前公司的软件注册码截图里的数字和字母(每次要一个一个框复制出来粘贴到注册器里,很麻烦!),因为注册码出现的字母和数字基本就那几个,所以识别库的范围设定的比较少. 原理和算法在代码中做了详细说明,功能存在很大的局限性,但我的想法是把这个思路和实现的办法共享出来. 源码下载地址: http://git.oschina.net/bobo2cj/iamge2text /* * 开发思路:图片灰度处理,二进制,然后和图片中的字二进制库精确对比 * * 获取字库:通过下面

  • C#把数字转换成大写金额的代码实例

    实现代码: 复制代码 代码如下: // 例如:(new Money(200)).ToString() == "贰佰元"namespace Skyiv.Util {    using System.Text;    class Test {        static void Main() {            for (;;) {                System.Console.Write("金额: ");                strin

  • C#实现将千分位字符串转换成数字的方法

    本文实例主要实现了C#将千分位字符串转换成数字的方法,对C#初学者而言有一定的借鉴价值,主要内容如下: 主要功能代码如下: /// <summary> /// 将千分位字符串转换成数字 /// 说明:将诸如"–111,222,333的千分位"转换成-111222333数字 /// 若转换失败则返回-1 /// </summary> /// <param name="thousandthStr">需要转换的千分位</param

  • C#将字母或数字加密成字母的方法

    本文实例讲述了C#将字母或数字加密成字母的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: public class MD5 {         static List<KeyValuePair<char, char>> MappingList;         #region 加密      public static string Encrypt(string str)         /// <summary>         /// 加密  

  • C#迷你猜数实例分析

    本文实例讲述了C#迷你猜数.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 迷你猜数 { class Program { static void Main(string[] args) { List<int> LisData = GetData(); LisD

  • Java中递归原理实例分析

    本文实例分析了Java中递归原理.分享给大家供大家参考.具体分析如下: 解释:程序调用自身的编程技巧叫做递归. 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合.   递归的三

  • PHP常用文件操作函数和简单实例分析

    PHP最常用的文件操作就是读取和写入了,今天就主要讲解一下读取和写入函数,并且做一个页面访问的计数功能,来记录一个页面的访问量. fopen():PHP中没有文件创建函数,创建和打开文件都用fopen()函数,函数的形式为:resource fopen( string filename, string mode ) 参数filename为打开或创建并打开的文件名,参数mode为打开的模式,具体模式如下: fread():PHP中可用于读取文件,函数的形式为:string fread( resou

  • CI(CodeIgniter)模型用法实例分析

    本文实例分析了CI(CodeIgniter)模型用法.分享给大家供大家参考,具体如下: MVC中的业务逻辑放在控制器中或者模型里都是不合适的,所以这里对业务逻辑进行了分离,多出一层用来处理业务逻辑,模型就只当作数据访问层,这样子模型将会变得比较轻.CI中并未通过实体对象来传参,参数的传入和返回都由开发者控制,比较灵活.很多情况下都会以数组的方式传入或者返回. 模型的使用也比较简单,这里只提一下使用前想到的几个问题吧. 1.既然已经有了数据访问层了,那我们就应当避免在控制器或者某些类中直接通过SQ

  • JSP中c:foreach遍历和s:iterator遍历异同实例分析

    本文实例分析了JSP中c:foreach遍历和s:iterator遍历的异同.分享给大家供大家参考.具体如下: ①jstl c:foreach 首先我们来看一个普通的servlet: import com.xy.entity.Board; import com.xy.entity.Topic; import com.xy.entity.User; public class ToMainAction extends HttpServlet { private IBoarderDao boardDa

  • Android 图片的三级缓存机制实例分析

    Android 图片的三级缓存机制实例分析 当我们获取图片的时候,如果不加以协调好图片的缓存,就会造成大流量,费流量应用,用户体验不好,影响后期发展.为此,我特地分享Android图片的三级缓存机制之从网络中获取图片,来优化应用,具体分三步进行: (1)从缓存中获取图片 (2)从本地的缓存目录中获取图片,并且获取到之后,放到缓存中 (3)从网络去下载图片,下载完成之后,保存到本地和放到缓存中 很好的协调这三层图片缓存就可以大幅度提升应用的性能和用户体验. 快速实现三级缓存的工具类ImageCac

  • mysql分区功能详解,以及实例分析

    一,什么是数据库分区 前段时间写过一篇关于mysql分表的 的文章,下面来说一下什么是数据库分区,以mysql为例.mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面 (可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存表 索引的.如果一张表的数据量太大的话,那么myd,myi就会变的很大,查找数据就会变的很慢,这个时候我们可以利用mysql的分区功能,在物理上将这 一张

  • php中Y2K38的漏洞解决方法实例分析

    本文实例分析了php中Y2K38漏洞的解决方法.分享给大家供大家参考.具体分析如下: Y2K38,又称 Unix Millennium Bug, 此漏洞将会影响到所有 32 位系统下用 UNIX 时间戳整数来记录时间的 PHP,及其它编程语言. 一个整型的变量所能保存的最大时间为 2038 年 1 月 19 日 03:14:07.超过这个时间后,整型数值将会溢出. 从 1970 年 01 月 01 日开始,到世界标准时 2038 年 01 月 19 日星期二凌晨 03:14:07 超过 2^31

  • JavaScript事件委托技术实例分析

    本文实例分析了JavaScript事件委托技术.分享给大家供大家参考.具体分析如下: 如果一个整体页面里有大量的按钮.我们就要为每一个按钮绑定事件处理程序.这样就会影响性能了. 首先每个函数都是对象,对象就会占用很多内存.内存中的对象越多,性能就越差. 其次,dom访问次数增多,就会导致延迟加载页面.事实上,从如何来利用好事件处理程序,还是有很好的解决方案的. 事件委托: 对事件处理程序过多的问题解决的方案就是事件委托技术. 事件委托技术利用了事件冒泡.只需指定一个事件处理程序. 我们可以为某个

  • JQuery动画与特效实例分析

    本文实例分析了JQuery动画与特效的用法.分享给大家供大家参考.具体分析如下: 显示与隐藏 show(spped,[callback])与hide(spped,[callback]) speed可选填slow.normal.fast,对应的速度分别为600ms.400ms.200ms.也可以直接填毫秒数,callback函数为回调函数,动作完成后调用此函数 $("img").show(3000,function(){ $(this).css("border",&q

随机推荐