`

抽签游戏

    博客分类:
  • java
 
阅读更多
代码如下:

package com.chapterOne.exercise;

/**
 * Created by yangjianzhou on 2014/8/14 17:11.
 * TODO :玩游戏:将写有数字n的纸片放入口袋中,可以从口袋中抽取4次纸片,每次记下纸片上的
 * 数字后都将其放回口袋中,如果这四个数字的和是m,则赢,否则输,编写程序,判断当纸片上所写的数字
 * 是k1,k2,k3,k4,....kn,是否存在抽取4次和为m的方案。
 * 基本思路:四次抽到的数字依次为a,b,c,d,a+b+c+d=m
 * a+b=m-c-d,且a+b的值为一个数组中的值
 */
public class Lottery {
    public static final int[] ARR = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    public static final int M = 56;
    public static final int[] MIDDLE_ARR = new int[ARR.length * ARR.length];

    public static void main(String[] args) {
        fillMiddleArrWithArr(ARR , MIDDLE_ARR);
        quickSort(MIDDLE_ARR,0,MIDDLE_ARR.length-1);
        boolean bool = winGame(ARR,M,MIDDLE_ARR);
        System.out.println("win game : " + bool);
    }

    /**
     * 在数组middleArr中填入相应的值
     */
    public static void fillMiddleArrWithArr(int[] arr ,int[] middleArr) {
        int index = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                middleArr[index++] = arr[i] + arr[j];
            }
        }
    }

    /**
     * 对数组middleArr进行快速排序
     */
    public static void quickSort(int[] middleArr, int lowIndex, int highIndex) {
        int tempLowIndex = lowIndex;
        int tempHighIndex = highIndex;
        int tempLowValue = middleArr[tempLowIndex];
        while (tempLowIndex < tempHighIndex) {
            while (tempLowIndex < tempHighIndex && middleArr[tempHighIndex] > tempLowValue) {
                tempHighIndex--;
            }
            if (tempLowIndex < tempHighIndex) {
                int temp = middleArr[tempHighIndex];
                middleArr[tempHighIndex] = tempLowValue;
                middleArr[tempLowIndex] = temp;
                tempLowIndex++;
            }
            while (tempLowIndex < tempHighIndex && middleArr[tempLowIndex] < tempLowValue) {
                tempLowIndex++;
            }

            if (tempLowIndex < tempHighIndex) {
                int temp = middleArr[tempLowIndex];
                middleArr[tempLowIndex] = tempLowValue;
                middleArr[tempHighIndex] = temp;
                tempHighIndex--;
            }
            if (tempLowIndex > lowIndex) {
                quickSort(middleArr, lowIndex, tempHighIndex - 1);
            }
            if (tempHighIndex < highIndex) {
                quickSort(middleArr, tempLowIndex + 1, highIndex);
            }
        }
    }

    public static int binarySearch(int[] middleArr, int target, int startIndex, int endIndex) {
        if (startIndex <= endIndex) {
            int middleIndex = (startIndex + endIndex) / 2;
            if (target == middleArr[middleIndex]) {
                return middleIndex;
            } else if (target > middleArr[middleIndex]) {
                return binarySearch(middleArr, target, middleIndex + 1, endIndex);
            } else {
                return binarySearch(middleArr, target, startIndex, middleIndex - 1);
            }
        } else {
            return -1;
        }
    }

    public static boolean winGame(int[] arr, int m, int[] middleArr) {
        int index = -2;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
               index = binarySearch(middleArr, m - arr[i] - arr[j], 0, middleArr.length - 1);
            }
        }
        return index >0 ;
    }
}




运行结果如下:

win game : false
分享到:
评论

相关推荐

    数据结构-抽签游戏

    ### 数据结构-抽签游戏 #### 一、背景与意义 在日常生活与工作中,抽签是一种常见的随机分配方法,广泛应用于各类活动与场合之中。本文档介绍了一种基于数据结构的抽签游戏实现方法,旨在通过计算机编程技术模拟...

    抽签游戏课程设计.zip

    抽签游戏是一款常见的娱乐活动,将参与者的名字写在签上,然后随机抽取,决定获奖者。在计算机领域,实现这样的抽签系统可以作为一项课程设计任务,帮助学生深入理解和应用数据结构。本项目是一个抽签游戏的应用程序...

    数据结构课设 抽签游戏

    数据结构课设 抽签游戏 C++ 需要的朋友拿走

    H5 手机抽签游戏源码

    3. **抽签游戏逻辑**: 抽签游戏的核心是随机数生成算法。在H5游戏中,这通常通过JavaScript实现,使用Math.random()函数生成0到1之间的随机数,再根据这个随机数来决定抽签结果。开发者可能会结合其他元素,如设置...

    c++抽签游戏代码

    根据提供的文件信息,我们可以分析出该程序主要实现了基于C++的一种抽签游戏。接下来,我们将对这段代码的关键知识点进行详细解读。 ### 1. 文件头部包含的库与宏定义 在程序开头,我们看到包含了两个标准库:`#...

    抽签游戏问题,采用数组作为数据类型

    这里介绍一种抽签游戏,如图3所示,最上面一排是游戏的参加者——称为抽签者,最下面一排是签号(奖品、公差等)。每个人依次顺着竖线往下走,当碰到横线时,即转横向前进,碰到竖线再往下,以此类推,则游戏结束后...

    网络游戏-一种用于抽签游戏的新型签子.zip

    网络游戏-一种用于抽签游戏的新型签子.zip

    flash抽签代码_flash 游戏

    抽签游戏是一种常见的娱乐方式,通过随机选择来决定顺序或结果,通常在聚会、活动或者比赛中使用。在Flash中实现这样的功能,开发者需要理解ActionScript的基础语法和对象模型,以及如何与用户界面(UI)元素进行...

    数据结构课程设计之抽签

    数据结构程序设计作业,功能在题目要求之上还添加了在桌面自动生成抽签结果的功能,并且代码异常简洁易懂,界面美观,绝对是获得高分的必备,需要VS2010运行,抽签人数和签及任务名字都可以自定义,相当灵活,想要...

    【游戏】基于matlab模拟抽签.zip

    在本项目中,我们主要探讨的是如何利用MATLAB这一强大的计算和编程环境来模拟一个抽签游戏。MATLAB,全称“矩阵实验室”,是工程、科学和数学领域广泛使用的工具,其简洁的语法和丰富的内置函数使其非常适合进行各种...

    authorware抽签

    一个很好的抽签游戏呦,帮助我们使用这款软件。

    快乐大本营游戏.doc

    8. 抽签游戏:让参与者抽签决定谁将进行下一个任务或挑战。 9. 跳兔子舞游戏:一个欢乐的舞蹈游戏,参与者需要模仿兔子的舞蹈动作。 10. 假面舞会游戏:一个角色扮演游戏,参与者需要扮演不同的角色。 11. 插花...

    抽签软件,用于抽签用

    它在日常生活、工作和娱乐场景中都有广泛的应用,比如在聚会中决定游戏顺序、体育比赛中的分组抽签或者公司抽奖活动等。下面将详细介绍抽签软件的工作原理、常见功能以及如何使用。 1. 工作原理: 抽签软件基于...

    MarketUP春节线上创意H5方案.pdf

    本方案主要分为四个创意部分,分别是新年好运签抽签游戏、送礼物H5、春联猜字游戏和年画话新年视频互动。 创意方案一:新年好运签抽签游戏 本方案的主要目的是通过抽签游戏,带给用户新年的祝福和好运。该游戏通过...

    大学生素质拓展游戏.docx

    7. **抽签游戏**:这个游戏鼓励参与者相互了解,增进友谊,同时也提供了一个有趣的方式来惩罚或要求别人做事。 8. **两只小蜜蜂**:简单的手势游戏,增强反应速度,增加团队的互动性。 9. **007游戏**:快速反应...

    Android抽签实例源码.rar

    这个“Android抽签实例源码.rar”压缩包包含了一个Android应用程序的源代码,该应用设计用于实现一个抽签功能。抽签是常见的活动,尤其在聚会、活动组织或决策过程中,这种应用能帮助用户随机选择参与者或选项。下面...

    chouqian_抽签程序_随机数抽签_

    在IT领域,随机数抽签程序是一种常见的应用,它通常用于各种场合,如抽奖、模拟实验、游戏设计等。这个“chouqian_抽签程序_随机数抽签_”很可能是一个实现了这一功能的软件或者代码示例。在这个程序中,关键在于...

    万能抽签器

    在家庭聚会中,它可以用来决定游戏的参与者或者分配任务;在商业活动中,抽签器可以帮助确定抽奖的幸运儿。万能抽签器的“万能”特性,意味着它可以适应这些多样化的场景,用户只需将需要抽签的项目输入系统,即可...

Global site tag (gtag.js) - Google Analytics