洗牌_MP3光标位置

举报
bug郭 发表于 2022/08/26 23:59:23 2022/08/26
【摘要】 洗牌洗牌import java.util.*;public class Main{ public static void helpfun(int[] array,int n,int x){ // int ret = new int[2*n]; error! while(x-->0){ int[] ret = new int[n*2];...

洗牌

洗牌

image-20220504094919058

image-20220504142900887

import java.util.*;
public class Main{
    public static void helpfun(int[] array,int n,int x){
        // int ret = new int[2*n]; error!
        while(x-->0){
            int[] ret = new int[n*2];//保存洗牌结果!
            for(int i = 0;i<n;i++){
                ret[2*i] = array[i];  //左手 i --> 2*i
                ret[2*i+1] = array[i+n]; //右手 i+n --> 2*i+1
            }
            array = ret;//更新洗牌!
            //这里将 ret 的引用给了 array 如果 ret 不重新声明
            //会使这个array和ret在一块数组空间交换,结果错误!
        }
       for(int i = 0;i<2*n-1;i++){
         System.out.print(array[i]+" ");
       }
       System.out.println(array[2*n-1]);
    }
  
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        while(T-->0){
            int n = sc.nextInt();
            int x = sc.nextInt();//洗牌次数!
            int[] array = new int[n*2];
            for(int i = 0;i<2*n;i++){
                array[i] = sc.nextInt();
            }
             helpfun(array,n,x);
        }
       
    }
}

MP3光标位置

MP3光标位置

image-20220504095049014

情况比较多,但是题不难,不要胆怯!!!

import java.util.*;

public class Main {
	public static void MP3PlayerLow4(String str, int n) {
			char[] ch = str.toCharArray();
			int begin = 1, cur = 1; // 起始序号,当前歌曲序号
			for (int i = 0; i < ch.length; i++) {
				if (cur == 1 && ch[i] == 'U') { // 光标在第一首歌曲上时,按Up键光标
					cur = n;
					continue;
				}
				if (cur == n && ch[i] == 'D') { // 光标在最后一首歌曲时,按Down键光标
					cur = 1;
					continue;
				}
				if (ch[i] == 'U') {
					cur -= 1;
				}
				if (ch[i] == 'D') {
					cur += 1;
				}
			}
			for (int i = 0; i < n; i++) {
				if (i==0) {
					System.out.print(begin);
				}else{
					System.out.print(" "+(begin+i));
				}
			}
			System.out.println();
			System.out.println(cur);
	}

	public static void MP3PlayerUp4(String str, int n) {
		char[] ch = str.toCharArray();
		int begin = 1, cur = 1; // 起始序号,当前歌曲序号
		for (int i = 0; i < ch.length; i++) {
			if (begin==1 && cur == 1 && ch[i] == 'U') { // 光标在第一页 ,第一首歌曲上时,按Up键光标
				cur = n;
				begin = n-3;
				continue;
			}
			if (begin==n-3 && cur == n && ch[i] == 'D') { // 光标在最后一页,最后一首歌曲时,按Down键光标
				cur   = 1;
				begin = 1;
				continue;
			}
			if (ch[i] == 'U' && begin==cur ) { 	// 光标在非第一页,第一首歌曲时,按Up键后,从当前歌曲的上一首开始显示,光标也挪到上一首歌曲。
				cur  -= 1;
				begin-= 1;
				continue;
			}
			if (ch[i] == 'D' && begin+3==cur) {
				cur  += 1;
				begin+= 1;
				continue;
			}
			if(ch[i] == 'U'){ 
				cur -= 1;
			}else{
				cur += 1;
			}
		}
		System.out.println(begin + " " + (begin + 1) + " " + (begin + 2)+ " " + (begin + 3));
		System.out.println(cur);
	}

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		while (input.hasNextInt()) {
			int n = input.nextInt(); // 歌曲数量
			String str = input.next(); // 操作序列
			if (n<=4) 
				MP3PlayerLow4(str, n);
			else
				MP3PlayerUp4(str, n);
		}
	}
}


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。