跳蚤移动

package unit3;

import com.sun.org.apache.xpath.internal.axes.WalkerFactory;

public class House {
    private int m;
    private int n;
    private int[][]a;
    public  House() {
        m=10;
        n=10;
        a=new int[m][n];
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                a[i][j]=0;
            }
        }
    }
    public House(int m,int n) {
        this.m=m;
        this.n=n;
        a=new int[m][n];
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                a[i][j]=0;
            }
        }
    }
    public int getM() {
        return m;
    }
    public int getN() {
        return n;
    }
    public int[][] getA() {
        return a;
    }
    public int getElement(int i,int j) {
        return a[i][j];
    }
    public void setElement(int i,int j,int value) {
        a[i][j]=value;
    }
    public boolean checkZero() {
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(a[i][j]==0) return true;
            }
        }
        return false;
    }
    public void  display() {
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                System.out.print(" "+a[i][j]+" ");
            }
            System.out.println();
        }
    }
    public class Tiaozao{
        private static final int UP=0;
        private static final int DOWN=1;
        private static final int RIGHT=2;
        private static final int LEFT=3;
        private int x,y;
        private int totals=0;
        private House ahouse;
        public Tiaozao(House h){
            ahouse=h;
            totals=0;
            x=(int)(Math.random()*ahouse.getM());
            y=(int)(Math.random()*ahouse.getN());
        }
        public int getTotals() {
            return totals;
        }
        public boolean walk(int direction) {
            System.out.println("x="+x+", y="+y+", direction="+direction);
            switch (direction) {
            case UP:
                if(y==0) {
                    return false;
                }else{
                    ahouse.setElement(x,y,ahouse.getElement(x,y)+1);
                    y=y-1;
                }
                return true;
            case DOWN:
                if(y==ahouse.getN()-1){
                    return false;
                }else{
                    ahouse.setElement(x,y,ahouse.getElement(x,y)+1);
                    y=y+1;
                }
                return true;
            case LEFT:
                if(x==0){
                    return false;
                }else{
                    ahouse.setElement(x,y,ahouse.getElement(x,y)+1);
                    x=x-1;
                }
                return true;
            case RIGHT:
                if(x==ahouse.getM()-1){
                    return false;
                }else{
                    ahouse.setElement(x,y,ahouse.getElement(x,y)+1);
                    x=x+1;
                }
                return true;
            default:
                System.out.println("分发移动");return false;
            }
        }
        public void move() {
            int nextdirection;
            boolean success;
            do{
                nextdirection=(int)(Math.random()*4);
                success=walk(nextdirection);
                if(success) totals++;
            }while(ahouse.checkZero());
        }

    }
    public static void main(String[] args){
        House ahouse= new House(6,6);
        Tiaozao atiaozao =ahouse.new Tiaozao(ahouse);
        atiaozao.move();
        ahouse.display();
        System.out.println("Totals="+atiaozao.getTotals());
    }

}
时间: 2025-01-01 20:41:17

跳蚤移动的相关文章

[HNOI2002]跳蚤

题目描述 Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字.跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度.而他最终的任务是跳到距离他左边一个单位长度的地方,并捡起位于那里的礼物. 比如当N=2,M=18时,持有卡片(10, 15, 18)的跳蚤,就可以完成任务:他可以先向左

bzoj 4310: 跳蚤

Description 很久很久以前,森林里住着一群跳蚤.一天,跳蚤国王得到了一个神秘的字符串,它想进行研究. 首先,他会把串分成不超过 k 个子串,然后对于每个子串 S,他会从S的所有子串中选择字典序最大的那一个,并在选出来的 k 个子串中选择字典序最大的那一个.他称其为"魔力串". 现在他想找一个最优的分法让"魔力串"字典序最小. Input 第一行一个整数 k. 接下来一个长度不超过 105 的字符串 S. Output 输出一行,表示字典序最小的"

小JAVA大世界之程序建模跳蚤实验

package com.chigoe;//房子类class House { private int m;// 保存行数 private int n;// 保存列数 private int[][] a; public House() { // 无参构造方法 m = 10; n = 10; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) { a[i][j] = 0; } } public House(int m,int n){//带参

【bzoj4310】跳蚤 后缀数组+二分

题目描述 很久很久以前,森林里住着一群跳蚤.一天,跳蚤国王得到了一个神秘的字符串,它想进行研究. 首先,他会把串分成不超过 k 个子串,然后对于每个子串 S,他会从S的所有子串中选择字典序最大的那一个,并在选出来的 k 个子串中选择字典序最大的那一个.他称其为“魔力串”. 现在他想找一个最优的分法让“魔力串”字典序最小. 输入 第一行一个整数 k. 接下来一个长度不超过 105 的字符串 S. 输出 输出一行,表示字典序最小的“魔力串”. 样例输入 13 bcbcbacbbbbbabbacbcb

[BZOJ1220][POJ1091][HNOI2002]跳蚤

试题描述 Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字.跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度.而他最终的任务是跳到距离他左边一个单位长度的地方,并捡起位于那里的礼物.比如当N=2,M=18时,持有卡片(10, 15, 18)的跳蚤,就可以完成任务:他可以先向左跳

POJ 1091 跳蚤

   Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9914   Accepted: 3032 Description Z 城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤 发一张卡片.卡片上写有N+1个自然数.其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字.跳蚤每次可以从卡片上任意选择一个自然数S, 然后向左

POJ 1091 跳蚤(分解质因数 + 容斥 + 大数)

跳蚤 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8910   Accepted: 2676 Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字.跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向

【UER #1】[UOJ#12]猜数 [UOJ#13]跳蚤OS [UOJ#14]DZY Loves Graph

[UOJ#12][UER #1]猜数 试题描述 这一天,小Y.小D.小C正在愉快地玩耍. 小Y是个数学家,他一拍脑袋冒出了一个神奇的完全平方数 n. 小D是个机灵鬼,很快从小Y嘴里套出了 n的值.然后在脑内把 n写成了 a×b的形式.其中 a,b 都是正整数. 小C是个八卦狂,他发现小D从小Y那里获知了神奇的东西,于是死缠烂打追问小D.最后小D说道:“我可以告诉你正整数 g和 l的值,我保证 ab=gl=n且 a,b都是 g 的倍数.但是 a,b 我可不能告诉你.” 这可急坏了小C.他决定退而求

poj1091:跳蚤【容斥原理】

题目大意:中文题就不翻译了 思路:假设跳蚤选择X1个第一张卡片,X2个第二张卡片...Xn个第n张卡片,Xn+1张写着m的卡片,那么就可以列出方程:a1*X1+a2*X2+…+an*Xn+m*X(n+1)=1 由于可以向左跳和向右跳,因此题目即问上述不定方程是否有解?答案以及它的证明可以在任何一本数论书中找到,它的充要条件是(a1,a2,a3...an,m)|1 即a1,a2,a3...an,m互质,这样题目就成为:有n+1个正整数,其中最大的数为m,问所有符合条件的序列中有多少是互质的. 组合

[HNOI 2002]跳蚤

Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字.跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度.而他最终的任务是跳到距离他左边一个单位长度的地方,并捡起位于那里的礼物.比如当N=2,M=18时,持有卡片(10, 15, 18)的跳蚤,就可以完成任务: