首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> C# >> 正文
数学与程序 一道游戏题目的快速解法
来源:ChinaItLab 作者:佚名 时间:2007-5-30

  和上面一样,m(n)为开始状态与目标状态的每位异或。至于是否存在解,本人已将次系数矩阵化简为对角矩阵,可以看到系数矩阵的秩(Rank)与未知数的个数相等,所以无论是任何的输入和输出变换都能找到唯一解。

  本人程序如下:

  int MinChange(const int Start[],const int End[]){

  int m[10];

  int k[10];

  int res=0;

  int i,j,n;

  for(i=0;i<10;i++){

  m[i]=Start[i]^End[i]; /* m[]=Start[] XOR End[] */

  }

  /* calculate roots */

  k[0]=m[0]^m[2]^m[3]^m[5]^m[6]^m[8]^m[9];

  k[1]=m[2]^m[3]^m[5]^m[6]^m[8]^m[9];

  k[2]=m[0]^m[1];

  k[3]=m[3]^m[0]^m[1]^m[5]^m[6]^m[8]^m[9];

  k[4]=m[5]^m[6]^m[8]^m[9];

  k[5]=m[4]^m[3]^m[0]^m[1];

  k[6]=m[6]^m[4]^m[3]^m[0]^m[1]^m[8]^m[9];

  k[7]=m[8]^m[9];

  k[8]=m[7]^m[6]^m[4]^m[3]^m[0]^m[1];

  k[9]=m[9]^m[7]^m[6]^m[4]^m[3]^m[0]^m[1];

  /* count for switch times */

  for(j=0;j<10;j++){

  if(k[j]) res++;

  }

  /* display k(n); */

  for(n=0;n<10;n++) printf("%d,",k[n]);

  return res;

  }

  测试主程序:

  main(){

  int A[10]={1,1,1,0,0,1,0,1,1,0};

  int B[10]={0,0,1,1,0,0,1,1,1,1};

  int C;

  C=MinChange(A,B);

  printf("**%d**",C);

  }

  显示结果为:

  1,0,0,0,1,1,1,1,0,1,**6**

  就是如果要把状态A转为状态B,需要把第0,4,5,6,7,9号开关翻动一次,共6次。

  测试验证结果正确:)

  当然,此做法也有一个缺点,就是当灯的个数改变时,就要重新设定线形方程组的特解形式。

上一页  [1] [2] 

【责编:Youping】
中国IT教育热线咨询
相关文章
VC中利用MFC设计绘图程序初步
编写快速高效的VB程序
在Delphi数据库应用程序中常见错误
浅谈Java桌面应用程序开发
利用 Delphi 轻松编制压缩助理程序…
C#写的ADSL拨号程序示例
VB中运用反射原理优化程序代码
Java程序开发中代理技术的使用方法
利用Visual C++制作应用程序启动画面…
详细解析C++编写的ATM自动取款机模拟程序
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05