2009年9月28日

爱因斯坦谜题:谁养鱼(C++版)

看   爱因斯坦谜题:谁养鱼(C#版)  http://www.cnblogs.com/yefanqiu/archive/2009/09/27/1575326.html
记得以前自己也写过一个C++版本,时间飞快出来结果(小于1秒),因对一个条件判断有歧义(绿色房子在白色房子左面),所以出来7个结果,贴代码如下


//---------------------------------------------------------------------------

#include <vcl.h>
//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------
#pragma argsused
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

char *Colorr[]={"红","白","绿","黄","蓝"};

char *Nationality[]={"英国","瑞典","丹麦","挪威","德国"};

char *Drink[]={"咖啡","牛奶","水","啤酒","茶"};
char *Cigarette[]={"Pall-Mall","Dunhill","Blends","Blue-Master","Prince"};
char *Pet[]={"狗","鸟","猫","马","鱼"};
int Order[120][5];
int main(int argc, char* argv[])
{
int count=0;
for(int i=0;i<5;i++)
   {
   for(int j=0;j<5;j++)
      {
      if (i==j) continue;
      for(int k=0;k<5;k++)
         {
         if (k==i || k==j) continue;
         for(int m=0;m<5;m++)
            {
            if (m==i || m==j || m==k) continue;
            for(int n=0;n<5;n++)
               {
               if (n==i || n==j || n==k || n==m) continue;
               Order[count][0]=i;
               Order[count][1]=j;
               Order[count][2]=k;
               Order[count][3]=m;
               Order[count][4]=n;
               count++;
               }
            }
         }
      }
   }
int a,b,c,d;
count=0;
int ii=0;
int jj=0;
int kk=0;
int mm=0;
int nn=0;
/////////////////////////////////////////////////////////
for(int i=0;i<120;i++)
{
// 4、绿色房子在白色房子左面   ???
for (a=0;a<5;a++)
   if (Order[i][a]==2)
      break;
for (b=0;b<5;b++)
   if (Order[i][b]==1)
      break;
if (a-b!=-1)
//if (a>b)
   continue;
ii++;
/////////////////////////////////////////////////////////
for(int j=0;j<120;j++)
{
// 1、英国人住红色房子
for (a=0;a<5;a++)
   if (Order[j][a]==0)
      break;
if (Order[i][a]!=0)
   continue;
// 9、 挪威人住第一间房
for (a=0;a<5;a++)
   if (Order[j][a]==3)
      break;
if (a!=0)
   continue;
// 14、挪威人住蓝色房子隔壁
for (a=0;a<5;a++)
   if (Order[j][a]==3)
      break;
for (b=0;b<5;b++)
   if (Order[i][b]==4)
      break;

if (abs(a-b)!=1)
   continue;

jj++;
/////////////////////////////////////////////////////////
for(int k=0;k<120;k++)
{
// 3、丹麦人喝茶
for (a=0;a<5;a++)
   if (Order[j][a]==2)
      break;
if (Order[k][a]!=4)
   continue;

// 5、绿色房子主人喝咖啡

for (a=0;a<5;a++)
   if (Order[i][a]==2)
      break;
if (Order[k][a]!=0)
   continue;

// 8、住在中间房子的人喝牛奶         ???
for (a=0;a<5;a++)
   if (Order[k][a]==1)
      break;
if (a!=2)
   continue;

kk++;
/////////////////////////////////////////////////////////
for(int m=0;m<120;m++)
{
// 7、黄色房子主人抽Dunhill 香烟
for (a=0;a<5;a++)
   if (Order[i][a]==3)
      break;
if (Order[m][a]!=1)
   continue;
// 12、抽Blue Master的人喝啤酒
for (a=0;a<5;a++)
   if (Order[m][a]==3)
      break;
if (Order[k][a]!=3)
   continue;
// 13、德国人抽Prince香烟
for (a=0;a<5;a++)
   if (Order[m][a]==4)
      break;
if (Order[j][a]!=4)
   continue;

// 15、抽Blends香烟的人有一个喝水的邻居
for (a=0;a<5;a++)
   if (Order[m][a]==2)
      break;
for (b=0;b<5;b++)
   if (Order[k][b]==2)
      break;

if (abs(a-b)!=1)
   continue;
mm++;
/////////////////////////////////////////////////////////
for(int n=0;n<120;n++)
{
// 2、瑞典人养狗
for (a=0;a<5;a++)
   if (Order[j][a]==1)
      break;
if (Order[n][a]!=0)
   continue;

// 6、抽Pall Mall 香烟的人养鸟
for (a=0;a<5;a++)
   if (Order[m][a]==0)
      break;
if (Order[n][a]!=1)
   continue;


// 10、抽Blends香烟的人住在养猫的人隔壁
for (a=0;a<5;a++)
   if (Order[m][a]==2)
      break;
for (b=0;b<5;b++)
   if (Order[n][b]==2)
      break;
if (abs(a-b)!=1)
   continue;


// 11、养马的人住抽Dunhill 香烟的人隔壁
for (a=0;a<5;a++)
   if (Order[m][a]==1)
      break;
for (b=0;b<5;b++)
   if (Order[n][b]==3)
      break;
if (abs(a-b)!=1)
   continue;
nn++;

 

AnsiString x;
AnsiString xx;
x="颜色=";
for (int z=0;z<5;z++)
   x=x+xx.sprintf("%-12s ",Colorr[Order[i][z]]);
puts(x.c_str());

x="国籍=";
for ( int z=0;z<5;z++)
   x=x+xx.sprintf("%-12s ",Nationality[Order[j][z]]);
puts(x.c_str());

x="饮料=";
for ( int z=0;z<5;z++)
   x=x+xx.sprintf("%-12s ",Drink[Order[k][z]]);
puts(x.c_str());

x="香烟=";
for ( int z=0;z<5;z++)
   x=x+xx.sprintf("%-12s ",Cigarette[Order[m][z]]);
puts(x.c_str());
x="宠物=";
for ( int z=0;z<5;z++)
   x=x+xx.sprintf("%-12s ",Pet[Order[n][z]]);
puts(x.c_str());
x="----------------Result "+AnsiString(count)+"--------------------";
puts(x.c_str());
count++;

}
}
}
}
}
TheEnd:
printf("round times %d %d %d %d %d\r\n",ii,jj,kk,mm,nn);
printf("Press any key for end!");
getch();
   return 0;
}
//---------------------------------------------------------------------------



posted @ 2009-09-28 11:21 孤岛 阅读(342) 评论(0) 编辑

2007年7月2日

学习WWF

很久没学技术了,缘于自己的懒惰,也自己给自己找了个理由,机器太老太慢。
终于搞了个双核的机器玩玩!

看到了WWF,三大核心技术之一,我以为也是对我最有帮助的,就开始学习起来。

找到了站点:http://www.wwfcn.net/
也找到了文章:http://www.cnblogs.com/zhuhee/archive/2007/01/20/625266.html

一个工作流引擎的例子http://www.cnblogs.com/foundation/archive/2007/07/08/810321.html

http://www.cnblogs.com/foundation/MyPosts.html
http://www.cnblogs.com/xiaoshatian/archive/2007/08/01/839609.html
http://www.cnblogs.com/xiaoshatian/category/88270.html?Show=All
http://www.cnblogs.com/carysun/archive/2008/05/29/WF.html

憧憬之未来,在.NET 3.0架构下,全部用WWF实现业务协同,将大量过去用代码,用存储过程,用数据库实现的逻辑控制,转向用WWF实现,当然,还是可以和数据库绑定,毕竟数据库作为可靠的持久层是必须的。

posted @ 2007-07-02 18:34 孤岛 阅读(156) 评论(0) 编辑

2006年12月12日

还是闹不懂Context.Cache

前两天写了《我被微软害苦了! Context.Cache的使用》
http://www.cnblogs.com/huanGe/archive/2006/12/10/588257.html

这两天测试的时候又发现取不到了标签,在震惊之余,将取标签的WEB服务地址改为正常运行地址,而不是调试时候指向的地址,这时候再怎么运行,都能正确获得,估计是WEB服务在调试阶段,容易出现内存分配失败的现象。

posted @ 2006-12-12 19:25 孤岛 阅读(463) 评论(0) 编辑

2006年12月10日

我被微软害苦了! Context.Cache的使用

    学习.NET,学习WEB服务,那不如动手实践下!
    用微软的例子程序:TaskVision,里面正好是一个智能客户端,一个WEB服务,符合要求。
    正好一个项目可以拿来练笔:用到里面的语句
Context.Cache.Insert(encryptedTicket, userID, null, DateTime.Now.AddMinutes(timeout), TimeSpan.Zero);
    意思让一个标签timeout分后失效。
    可就好,写好运行,总是偶尔有效,估摸十次有一次有效,标签能正常加进去,苦恼了两天,才发现是.NET2.0改变了写法,不能和1.1那样使用了。
正确用法是:
<1>            // 采用N分钟后过期策略
            Context.Cache.Insert(encryptedTicket, userID, null, DateTime.Now.AddMinutes(timeout), System.Web.Caching.Cache.NoSlidingExpiration);
<2>
            // 采用N分钟没有使用则过期策略
            Context.Cache.Insert(encryptedTicket, userID, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(timeout));           
一切其实也在帮助中,那十次有一次有效的偶尔性是怎么回事情,也没力气分析了,
System.Web.Caching.Cache.NoAbsoluteExpiration 和用DateTime.MaxValue效果一样。

posted @ 2006-12-10 21:37 孤岛 阅读(3276) 评论(2) 编辑

2006年11月20日

SaaS

SaaS-Software-as-a-service(软件即服务),那是几年前看IBM的战略转型,接受了软件就是服务的观点,如今,在公司的困惑中,提出了这个思路,不管于公司或者自己,都是一种挑战,那好,我接受这挑战,以最短时间搭好一个框架,实现这个服务。
正好这些,用.NET智能客户端实现。

posted @ 2006-11-20 15:58 孤岛 阅读(43) 评论(0) 编辑

2006年11月7日

投入.NET,我的第一篇BLOG

摘要: 新入医疗卫生行业,有太多的意外! 作为一个在网上混了十多年的老人,没吃过猪肉,应该还见过不少猪跑,确总也没想落地写个什么BLOG,最近总在看.NET资料,在这看到了各地.NET俱乐部,付出得到总是成正比的,那也就在这安家了. 我怎么选择了.NET作为一个新的方向发展,只能说我一直是个懒人,不愿意怎么深入下去学新的东西.从一开始学PASCAL,用的就是TRUBO PASCAL(刚才查了一下,最早版本...阅读全文

posted @ 2006-11-07 12:03 孤岛 阅读(27) 评论(0) 编辑

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

导航

统计

公告

昵称:孤岛
园龄:5年3个月
粉丝:0
关注:0

搜索

 
 

常用链接

最新随笔

随笔档案

文章分类

C#

WWF

花海

占山为王

最新评论

阅读排行榜

评论排行榜

推荐排行榜