邮局派发信件java实现

//Postman.java
package cn.campsg.java.experiment.entity;

public class Postman {
    private String postName;
    private int mailCount;

    public String getPostName() {
        return postName;
    }

    public void setPostName(String postName) {
        this.postName = postName;
    }

    public int getMailCount() {
        return mailCount;
    }

    public void setMailCount(int mailCount) {
        this.mailCount = mailCount;
    }

    public Postman() {
    }

    public Postman(String postName, int mailCount) {
        this.postName = postName;
        this.mailCount = mailCount;
    }

}


//SendMails.java
package cn.campsg.java.experiment.entity;

public class SendMails extends Thread {
    private Postman post;

    public Postman getPost() {
        return post;
    }

    public void setPost(Postman post) {
        this.post = post;
    }

    public SendMails() {
    }

    @Override
    public void run() {
        int count = 0;
        while (post.getMailCount() > 0) {
            System.out.println(post.getPostName() + " 还有" + post.getMailCount() + "封信。开始送第 " + (++count) + "封信!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            post.setMailCount(post.getMailCount() - 1);
        }
        System.out.println(post.getPostName() + " 已完成所有邮件派送!。");
    }
}


//MainClass.java
package cn.campsg.java.experiment;

import cn.campsg.java.experiment.entity.Postman;
import cn.campsg.java.experiment.entity.SendMails;

public class MainClass {
    public static void main(String[] args) {
        System.out.println("邮递员接收派发任务后开始送信:");
        for (int i = 0; i < 5; i++) {
            int mCount = (int) (1 + Math.random() * 10);
            Postman postman = new Postman("邮递员" + i, mCount / 2);
            SendMails sendMails = new SendMails();
            sendMails.setPost(postman);
            new Thread(sendMails).start();
        }
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的分治法邮局选址问题的Java代码实现: ```java import java.util.Arrays; public class PostalOffice { public static void main(String[] args) { int[] houses = {2, 4, 6, 8, 10}; int numOffices = 3; int minDist = getMinDistance(houses, numOffices); System.out.println("Minimum distance: " + minDist); } public static int getMinDistance(int[] houses, int numOffices) { int n = houses.length; int[][] dp = new int[numOffices + 1][n]; for (int i = 0; i <= numOffices; i++) { Arrays.fill(dp[i], -1); } return minDistance(houses, numOffices, 0, dp); } public static int minDistance(int[] houses, int numOffices, int start, int[][] dp) { int n = houses.length; if (numOffices == 0) { return 0; } if (dp[numOffices][start] != -1) { return dp[numOffices][start]; } int minDist = Integer.MAX_VALUE; for (int i = start; i <= n - numOffices; i++) { int dist = getDistance(houses, start, i) + minDistance(houses, numOffices - 1, i + 1, dp); minDist = Math.min(minDist, dist); } dp[numOffices][start] = minDist; return minDist; } public static int getDistance(int[] houses, int start, int end) { int mid = (start + end) / 2; int dist = 0; for (int i = start; i <= end; i++) { dist += Math.abs(houses[i] - houses[mid]); } return dist; } } ``` 这个实现使用了一个二维数组来存储子问题的解,以避免重复计算。函数`minDistance`采用递归的方式计算最小距离,并返回结果。`getDistance`函数计算了一组房子中心的距离。最后,`getMinDistance`函数初始化了二维数组,并调用`minDistance`函数来计算最小距离。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值