首页 > 其他分享 >十 1360. 有序分数 (最大公约数|递归)

十 1360. 有序分数 (最大公约数|递归)

时间:2024-03-25 21:23:31浏览次数:31  
标签:递归 int System dfs 最大公约数 static 1360 out

1360. 有序分数 (最大公约数|递归)
image

方法一

思路:统计所有组合,并求其最大公约数是否为1,只有最大公约数为1的组合才成立,然后按组成的分数大小顺序排序。

import java.util.*;

public class Main {
    private static int gcd(int a, int b) {
        return b == 0 ? a : gcd(b, a % b);
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] a = new int[n * n + 1][2];
        int cnt = 0;
        for (int i = 0; i <= n; i++) {
            for (int j = 0; j <= i; j++) {
                if (gcd(i, j) == 1) {
                    a[cnt][0] = i;
                    a[cnt][1] = j;
                    cnt++;
                }
            }
        }
        int[][] res = new int[cnt][2];
        for (int i = 0; i < cnt; i++) {
            res[i][0] = a[i][0];
            res[i][1] = a[i][1];
        }
        Arrays.sort(res, (o1, o2) -> o1[1] * o2[0] - o2[1] * o1[0]);
        for (int i = 0; i < cnt; i++) {
            System.out.println(res[i][1] + "/" + res[i][0]);
        }
    }
}

方法二

思路:递归

import java.util.*;

public class Main {
    static int n;
    private static void dfs(int a, int b, int c, int d) {
        if (a + c > n) {
            return;
        }
        dfs(a, b, a + c, b + d);
        System.out.println((b + d) + "/" + (a + c));
        dfs(a + c, b + d, c, d);
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        System.out.println("0/1");
        dfs(1, 0, 1, 1);
        System.out.println("1/1");
    }
}

标签:递归,int,System,dfs,最大公约数,static,1360,out
From: https://www.cnblogs.com/he0707/p/18095385/lanqiaobei10

相关文章

  • Java的方法、重载、递归、内存
    一、方法什么是方法方法:一堆代码的集合,一般完成了某个特定的功能,当我们再次使用这个方法的时候,就等于使用了这些代码。方法目的:代码复用,提高程序灵活度,易维护,易扩展。方法的声明修饰符列表  返回值类型  方法名 (参数列表){ 方法体 }注意事项修饰符列表 ......
  • python 递归树状结构 和 排序
    排序defrecursive_sort(self,categories):categories.sort(key=lambdax:x['sort'])forcategoryincategories:ifcategory['children']:category['children']=self.recursive_sort(ca......
  • 第9讲:函数递归
    第9讲:函数递归1.递归是什么?1.1递归的思想:1.2递归的限制条件2.递归举例2.1举例1:求n的阶乘2.1.1分析和代码实现2.1.2画图推演2.2举例2:2.2.1分析和代码实现2.2.2画图推演3.递归与迭代1.递归是什么?递归是学习C语言函数绕不开的⼀个话题,那什么是递归呢?递......
  • 【数据结构】快速排序(用递归)
    大家好,我是苏貝,本篇博客带大家了解快速排序,如果你觉得我写的还不错的话,可以给我一个赞......
  • 【数据结构】归并排序(用递归)
    大家好,我是苏貝,本篇博客带大家了解归并排序,如果你觉得我写的还不错的话,可以给我一个赞......
  • [数据结构]二叉树的建立与遍历(递归)
    一、二叉树的遍历与建立首先我们拥有如下二叉树:要了解二叉树遍历,我们得先了解二叉树的三种遍历方式:前序遍历,中序遍历,后序遍历1.前序遍历前序遍历:根,左子树,右子树遍历的结果就是:1248NN9NN510NN11NN36NN7NN2.中序遍历中序遍历:左子树根......
  • 递归法求解最大连续子序列和MaxSubSum
    何为递归呢总结一句话就是:向基准情形不断推进核心就在于“递”和“归”递:不断推进归:向基准情形结合今天的例子进一步解释如下:分而治之的思想divideandconquer分三步:“分”“治”“合并”“分”:将子序列看作三种,左半部分右半部分跨越中间元素的子序列“治”......
  • SQL语句的递归查询
        在银行的统计分析任务中,往往是需要查询本行及其下级行、下级行的支行等各机构各自的运营情况,入参可以能是总行,也可能是一级行或二级行甚至支行,如果针对每种情况都各种写一个查询语句,工作量过于繁杂,但用了递归查询,就可以一劳永逸了;  下面介绍一下递归查询的格式......
  • 汉诺塔问题-递归问题-JAVA实现
    什么是汉诺塔?汉诺塔(河内塔)(TowerofHanoi)是根据一个传说形成的数学问题:常见玩具版汉诺塔有8个圆盘          3个圆盘的汉诺塔的移动          4个圆盘的汉诺塔的移动由此变成一个数学问题有三根杆子A,B,C。A杆上有N个(N>1)穿......
  • list转树状结构 非递归 多个顶级节点 通用工具类
    有时候,需要返给前端需要的树状结构数据。需要后端转换组装。做了个通用工具类,非递归方式,简单易用。上代码:树结构类:packagecom.ruoyi.shop;importlombok.Data;importjava.util.List;/***返回前端树结构*@Authorwql*@Date2024/3/219:36*/@Datapubl......