鱼C论坛

 找回密码
 立即注册
查看: 3452|回复: 7

[已解决]救救孩子吧,写不出来

[复制链接]
发表于 2021-11-15 18:08:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求解
最佳答案
2021-11-17 11:14:26
public class Test01 {
    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);
        //输入n
        int n = scanner.nextInt();
        //输入n个点的高度
        int[] nums=new int[n];
        for (int i=0;i<n;i++){
            nums[i]=scanner.nextInt();
        }
        //输出山的个数
        System.out.println(countMountain(n,nums));
    }
    //计算山的个数
    public static Integer countMountain(int n,int[] nums){
        //如果点的个数小于3则不能构成山,所以直接返回0
        if (nums.length<3){
            return 0;
        }
        int res=0;
        //从索引值为1的点开始遍历,分别向两端搜索小于当前索引值的点的个数,两个值的乘积即为当前索引值为山峰的山的个数
        for (int i=1;i<nums.length-1;i++){
            int leftNums=0;
            for (int j=0;j<i;j++){
                if (nums[j]<nums[i]){
                    leftNums++;
                }
            }
            int rightNums=0;
            for (int j=i+1;j<nums.length;j++){
                if (nums[j]<nums[i]){
                    rightNums++;
                }
            }
            res+=leftNums*rightNums;
        }
        return res;
    }
}
F9214F8DADD4CB68AEBB9D6A598D195C.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 18:17:25 | 显示全部楼层
        一个问题不明白,样例中的 (0 , 2 , 1)、(0 , 3 , 1)、(0 、4 、1) 、(0 、4 、3)为什么就不是一座山?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-15 18:29:36 | 显示全部楼层
jackz007 发表于 2021-11-15 18:17
一个问题不明白,样例中的 (0 , 2 , 1)、(0 , 3 , 1)、(0 、4 、1) 、(0 、4 、3)为什么 ...

顺序不能变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-15 19:09:24 | 显示全部楼层
n = int(input())
d = list(map(int , input() . split()))
e = [(d[a] , d[b] , d[c]) for a in range(len(d) - 2) for b in range(a + 1 , len(d) - 1) for c in range(b + 1 , len(d)) if d[b] > d[a] and d[b] > d[c]]
print(len(e))
print(*e) 
        运行实况:
D:\00.Excise\Python>python x.py
5
0 1 3 4 2
5
(0, 3, 2) (0, 4, 2) (1, 3, 2) (1, 4, 2) (3, 4, 2)

D:\00.Excise\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-15 19:17:08 | 显示全部楼层
我走了,我连题目都不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-15 19:17:24 | 显示全部楼层
谢了好兄弟,python我也能写出来,但是我想知道的是JAVA怎么写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-16 17:14:28 From FishC Mobile | 显示全部楼层
有没有大佬,写一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-17 11:14:26 | 显示全部楼层    本楼为最佳答案   
public class Test01 {
    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);
        //输入n
        int n = scanner.nextInt();
        //输入n个点的高度
        int[] nums=new int[n];
        for (int i=0;i<n;i++){
            nums[i]=scanner.nextInt();
        }
        //输出山的个数
        System.out.println(countMountain(n,nums));
    }
    //计算山的个数
    public static Integer countMountain(int n,int[] nums){
        //如果点的个数小于3则不能构成山,所以直接返回0
        if (nums.length<3){
            return 0;
        }
        int res=0;
        //从索引值为1的点开始遍历,分别向两端搜索小于当前索引值的点的个数,两个值的乘积即为当前索引值为山峰的山的个数
        for (int i=1;i<nums.length-1;i++){
            int leftNums=0;
            for (int j=0;j<i;j++){
                if (nums[j]<nums[i]){
                    leftNums++;
                }
            }
            int rightNums=0;
            for (int j=i+1;j<nums.length;j++){
                if (nums[j]<nums[i]){
                    rightNums++;
                }
            }
            res+=leftNums*rightNums;
        }
        return res;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 18:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表