矩形可以切割多少个最大的正方形

简介: 矩形可以切割多少个最大的正方形

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

题目描述
小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为
止。 形
依次切出3x3、2x2 1x1 1x1共4个正方形 例如,对于一块两边分别为5和3的材料(记为5x3),小明会 切
最终会切出多少个正方形? 现在小明有一块矩形的材料,两边长分别是2019和324。请问小明 割

解题思路:那这道题的话,肯定是要找最长边来切割的,然后切完之后就要减去宽,再切,直到长小于宽,这时候就交换长度,再继续循环,直到宽等于长即可。

🆗直接看代码:

import java.util.Scanner;

public class day07 {

public static void main(String[] args) {
    //定义矩形初始的长和宽
    int longSide = 2019;
    int width = 324;
    //正方形个数
    int count = 0;
    //取最小边和最大边
    int maxSide = max(longSide,width);
    int minSide = min(longSide,width);
    while(minSide!=maxSide) {
        if(maxSide>minSide) {
            maxSide = maxSide - minSide;
            count++;
            System.out.println("切了第 " + count + " 个正方形,边为: " + minSide + " -> 剩余的长为: " + maxSide + ", 宽为: " + minSide);
        }
        else{
            int temp;
            temp = maxSide;
            maxSide = minSide;
            minSide = temp;
        }
    }
    count++;
    System.out.println("所以长为: "+longSide + ", 宽为: "+width+"的矩形可以切 "+count+" 个正方形");
}

public static int max(int a,int b){
    return Math.max(a, b);
}

public static int min(int a,int b){
    return Math.min(a,b);
}

}

运行结果:

下面给上测试类的代码:

import java.util.Scanner;

public class testDay07 {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    while(!text(scanner).equals("end")) {
        System.out.println("-------------------- 裁剪系统开始 --------------------");
        //定义矩形初始的长和宽
        int longSide = (int) (Math.random()*10000 + 1);
        int width = (int) (Math.random()*10000 + 1);
        System.out.println("开始随机获得长为: "+longSide+",宽为: "+width+" 的矩形");
        //正方形个数
        int count = 0;
        //取最小边和最大边
        int maxSide = max(longSide, width);
        int minSide = min(longSide, width);
        while (minSide != maxSide) {
            if (maxSide > minSide) {
                maxSide = maxSide - minSide;
                count++;
                System.out.println("切了第 " + count + " 个正方形,边为: " + minSide + " -> 剩余的长为: " + maxSide + ", 宽为: " + minSide);
            } else {
                int temp;
                temp = maxSide;
                maxSide = minSide;
                minSide = temp;
            }
        }
        count++;
        System.out.println("所以长为: " + longSide + ", 宽为: " + width + "的矩形可以切 " + count + " 个正方形");
        System.out.println("-------------------- 裁剪系统结束 --------------------");
        System.out.println();
    }
}

public static String text(Scanner scanner){
    System.out.print("请输入任意字符串继续系统或者输入end退出系统: ");
    String str = scanner.nextLine();
    System.out.println();
    return str;
}

public static int max(int a,int b){
    return Math.max(a, b);
}

public static int min(int a,int b) {
    return Math.min(a, b);
}

}

相关文章
|
Android开发
Android5.0 Recovery源代码分析与定制(一)
Android5.0 Recovery源代码分析与定制(一)
442 0
|
druid Java 数据库连接
什么是连接池?为什么需要连接池呢?连接池的组成原理又是什么呢?
什么是连接池?为什么需要连接池呢?连接池的组成原理又是什么呢?
2591 0
什么是连接池?为什么需要连接池呢?连接池的组成原理又是什么呢?
|
Shell Linux Python
基于远程服务器安装配置Anaconda环境及创建python虚拟环境详细方案(一)
基于远程服务器安装配置Anaconda环境及创建python虚拟环境详细方案
8983 0
基于远程服务器安装配置Anaconda环境及创建python虚拟环境详细方案(一)
|
人工智能 前端开发 API
MoneyPrinterTurbo:23.9K Star!这个AI把写文案+找素材+剪视频全包了,日更10条不是梦
MoneyPrinterTurbo 是一款功能强大的 AI 工具,支持通过主题或关键词自动生成视频文案、素材、字幕与背景音乐,并合成高清短视频,适合批量生成与多语言支持。
2351 4
|
前端开发 NoSQL Java
【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
本文介绍了如何配置和启动基于Java的若依(RuoYi)项目,涵盖后端和前端的详细步骤。首先,准备Redis、MySQL以及IDE(如Idea和VS)。接着,通过GitHub获取代码并导入到IDE中,执行必要的SQL文件和配置数据库密码。然后,启动Redis并进行相关配置。最后,按照前端配置步骤克隆前端代码库,打开终端执行命令完成前端配置。整个过程详细记录了每一步的操作,帮助开发者顺利部署若依项目。 如果你觉得有帮助,请点赞、关注和收藏,这将是我持续分享的动力!
8871 4
|
存储 C语言 Perl
西门子S7-1200的变量如何使用?什么是局部变量和全局变量?临时变量和静态变量有什么区别?
今天给大家讲一下什么是局部变量、全局变量、临时变量、静态变量,这些变量都有什么区别,以及在西门子S7-1200中这些变量如何来使用。
西门子S7-1200的变量如何使用?什么是局部变量和全局变量?临时变量和静态变量有什么区别?
|
Android开发
【通讯录教程】苹果安卓鸿蒙系统通用,如何大批量导入手机号码到手机的通讯录,下面教你方法,只需1分钟搞定几万个号码的导入手机电话本
该文介绍了一种快速批量导入手机通讯录的方法,适用于处理大量手机号的需求,如微商管理、客户资料整理等。在QQ同步助手开始收费后,提供了免费的替代方案。步骤包括:下载批量导入软件(链接提供腾讯云盘和百度网盘地址),清空通讯录(非必需),制作符合格式的通讯录文件,并按操作系统(苹果、安卓或鸿蒙)进行导入。整个过程只需1分钟,简便快捷。
3572 2
|
数据采集 SQL 监控
大数据清洗的艺术:有效处理缺失值、异常值与重复数据
【4月更文挑战第8天】本文探讨了大数据清洗的三个关键环节:缺失值处理、异常值识别与处理、重复数据消除。在处理缺失值时,涉及识别、理解原因、选择删除、填充或保留策略,并进行结果验证。异常值识别包括统计方法、业务规则和可视化检查,处理策略包括删除、修正和标记。重复数据的识别基于主键和关键属性,处理策略有删除、合并和哈希,处理后需持续监控。数据清洗是一门艺术,需要结合统计学、编程技能和业务理解。
4392 2
|
监控 供应链 数据挖掘
ERP系统在中小企业的实施案例分析
ERP系统在中小企业的实施案例分析
764 1
|
负载均衡 监控 安全
介绍grpc
gRPC(gRPC Remote Procedure Call)是一种高性能、开源的远程过程调用(RPC)框架,最初由Google开发并开源。它基于HTTP/2协议传输,使用Protocol Buffers(ProtoBuf)作为默认的序列化机制,支持多种编程语言,并提供了强大的功能和特性。

热门文章

最新文章