资源简介

硕士人工智能课程作业资源包,包含了12硬币(12coins)源程序和README文档,而且包含了上课时用需要演讲使用的PPT幻灯片,还有两篇关于12硬币的论文可以参考阅读。12硬币问题的描述:有12个硬币,已知有一个是不标准的(不能确定是轻还是重),要求使用天平最多3次,找出那个不标准的硬币,并确定是轻的还是重的。

资源截图

代码片段和文件信息

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Coins
{
/* 五元组中每个元素依次代表{LHSLSHSST}.
 *  标准型(Standard)标记为S
轻标型(Light or Standard)标记为LS
重标型(Heavy or Standard)标记为HS
轻重标准型(Light or Heavy or Standard)标记为LHS
已经称量的次数 标记为T
*/
//创建数组中要用的下标值
static int lhs = 0;
static int ls = 1;
static int hs = 2;
static int s = 3;
static int t = 4;

// 创建未知硬币的个数
static int uncertainty = 12;
// 创建目标状态五元组设置最多利用天平的次数
static int limit = 3; 

// 设置一个结点记录值,本来想用一个int值就行了,不过我要add到nodeRecord集合后面,必须add整型数组,我也懒得改了,就直接把标记设成整型数组。
static int[] notExist = {-1};
static int[] notknow={0};
static int[] success = {1};
static int[] fail = {2};
static int[] sameSituation = {3};

//  创建测试状态组,测试天平方案
static int[] testState= {39 0 0 0 0};
static int[] testleft = {13000};
static int[] testright = {13000};

/**
 * @param args
 */
public static void main(String[] args)
{

while (true)
{
// TODO Auto-generated method stub
// 用于保留遍历过的结点的列表,其中[状态元组+左盘分配元组+右盘分配元组+结点标记值],简写【状态+方案】列表。
ArrayList List = new ArrayList();
System.out.print(“请输入未知硬币的个数:“);
try
{
   InputStreamReader temp=new InputStreamReader(System.in);
   BufferedReader input=new BufferedReader(temp); 
//    System.out.println(input.readLine());
   uncertainty = Integer.valueOf(input.readLine());
}
catch (IOException e)
{
   e.printStackTrace();
}
System.out.print(“请输入称量次数:“);
try
{
InputStreamReader temp=new InputStreamReader(System.in);
BufferedReader input=new BufferedReader(temp); 
// System.out.println(input.readLine());
limit = Integer.valueOf(input.readLine());
}
catch (IOException e)
{
e.printStackTrace();
}

// 创建初始状态五元组
int[] initialState = {uncertainty0000};
// 创建目标状态五元组
// int[] goalState1 = {010uncertainty-1limit};
// int[] goalState2 = {001uncertainty-1limit};

// 最初状态赋值给当前状态。
int [] currentState = initialState;

long t1=System.currentTimeMillis();
//运行测试内容
// 构造第一个结点。
boolean isok = checkThisState(ListcurrentState);
long t2=System.currentTimeMillis();

System.out.println(“\n寻找解决方案的过程中产生的所有状态都保存在列表中...“);
showWaytoGoal(ListinitialState);

System.out.print(“\n\n运行时间为:“+(t2-t1)+“毫秒!“);

if (isok)
{
System.out.print(“\n从“+uncertainty+“个未知硬币中通过使用“+limit+“次天平找假硬币,有解!“);
}
else {
System.out.print(“\n从“+uncertainty+“个未知硬币中通过使用“+limit+“次天平找假硬币,无解!“);
}
// System.out.println(“列表中成功的【状态+方案】结点有多少个?“+triumph);
// System.out.println(“记录中成功路径有多少条?“+ways);
System.out.println();
System.out.println();
System.out.println();
try
{
Thread.sleep(1000);
}
catch (InterruptedException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .CA....    171254  2011-05-09 10:37  十二硬币问题的进一步求解.pdf

    .CA....    278449  2011-05-09 15:20  用AO算法求解一个智力难题.pdf

    .CA....    113152  2011-05-18 22:36  12硬币.ppt

     文件       9996  2011-06-03 20:00  Coins.class

     文件      29384  2011-06-03 19:10  Coins.java

     文件     216576  2011-06-03 19:50  CoinsCheck.exe

    .CA....    187392  2013-01-29 14:28  Readme.doc

----------- ---------  ---------- -----  ----

              1006203                    7


评论

共有 条评论