Java实现整数面积拆分:计算可组成的正方形规格与数量
整数面积拆分不同规格正方形的Java实现
实现思路
每次从剩余面积里提取最大规格的正方形(边长取剩余面积平方根的向下整数值),统计该正方形的数量,再用剩余面积继续重复拆分操作,直到剩余面积为0。
代码实现
import java.util.Scanner; public class SquareSplitter { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入面积:"); int area = scanner.nextInt(); scanner.close(); int totalCount = 0; int remaining = area; while (remaining > 0) { // 计算当前剩余面积能容纳的最大正方形边长 int side = (int) Math.sqrt(remaining); int squareArea = side * side; remaining -= squareArea; totalCount++; // 打印每一步拆分细节 System.out.printf("拆分出1个%d×%d的正方形,剩余面积%d平方米%n", side, side, remaining); } System.out.printf("总面积%d平方米共拆分为%d个正方形%n", area, totalCount); } }
代码说明
- 用
Scanner接收用户输入的整数面积 - 循环处理剩余面积:
- 通过
Math.sqrt()结合强制类型转换,得到当前剩余面积能容纳的最大正方形边长 - 减去该正方形的面积,同时累加正方形总数
- 通过
- 每一步输出拆分过程,最后输出总数量
测试示例
输入12时,程序输出:
请输入面积:12 拆分出1个3×3的正方形,剩余面积3平方米 拆分出1个1×1的正方形,剩余面积2平方米 拆分出1个1×1的正方形,剩余面积1平方米 拆分出1个1×1的正方形,剩余面积0平方米 总面积12平方米共拆分为4个正方形
完全匹配需求示例的拆分逻辑:1个3×3正方形,3个1×1正方形,总计4个。
内容的提问来源于stack exchange,提问作者Mussie
相关产品推荐
相关产品推荐

