哔哩哔哩2018.9.21笔试题——扭蛋机(堆的思想解决)

一、题目:扭蛋机
甲乙俩人刚开始都没有蛋,甲扭2号机,乙扭3号机。
(1)扭蛋机的规则:
2号扭蛋机:2x+1
3号扭蛋机:2
x+2
eg: 如果甲刚开始没有蛋,扭一下2号机,获得2*0+1=1颗蛋。
(2)游戏规则:
要求以最少的次数恰好扭出N个蛋。
(3)扭蛋规则:
甲乙俩人部分先后,一人扭完蛋将所有的蛋交由另一个人扭或者自己扭,但是要保证扭蛋次数最少,且恰好扭出N个蛋。

(4)输入输出:
输入:需要扭出的N个蛋。
输出:依次使用扭蛋机的编号。
(5)eg:
输入:
10
输出:
233

二、思路:
1、将扭蛋的题目转化为在堆中查找某一节点:从堆顶到该节点的路径。
看到扭蛋机的规则中的2x+1、2x+2。
想到用堆:
2x+1 为左孩子(-------------向左走:扭2号机后,当前拥有的总蛋数),
2
x+2 为右孩子(-------------向右走:扭3号机后,当前拥有的总蛋数),
x 为父亲 (-------------没走前:没扭扭蛋机之前拥有的总蛋数)。
且无需建堆操作:
因为 0~N,既是下标,也是数组中的存储元素(-------------当前拥有的扭蛋数)。
所以,遍历数组时,直接取对应下标即可,无需弄一个数组专门存放堆中元素。
在这里插入图片描述
eg:要扭到10个蛋,必须走0->1->4->10这一条路,且堆的高度最小。

2、在堆中查找某一节点:从堆顶到该节点的路径。
从该节点开始,一路向上查找父节点,直至遇到堆顶元素为止,将遇到的父节点按时间先后顺序依次存储在栈中,最后,将栈中元素逆序输出即可。

	int k;
	cin>>k;//恰好扭出k个蛋
	stack<int> s;
	s.push(k);
	while (((k - 1) / 2) > 0){
		k = (k - 1) / 2;
		s.push(k);
	}

	while (!s.empty()){
		int x = s.top();
		s.pop();
		cout << x << " ";
	}

最后,对栈中输出的元素进行数值判断,如果是左孩子,输出2,如果是右孩子输出3。
这样就满足题目要求啦!!

三、代码如下:

#include<iostream>
#include<stack>
using namespace std;
//扭蛋机
int main(){
	int k;
	cin >> k;//恰好扭出k个蛋
	stack<int> s;
	s.push(k);
	while (((k - 1) / 2) > 0){
		k = (k - 1) / 2;
		s.push(k);
	}

	while (!s.empty()){
		int x = s.top();
		s.pop();
	//	cout << x << " ";
		if (x % 2)cout << 2;
		else cout << 3;
	}
	cout << endl;
}

测试了10组数据:
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 哔哩哔哩的audio.m4s是一种音频文件格式,常用于在线音乐、视频等媒体内容的存储和传输。通常在哔哩哔哩网站上播放音频时,会将音频数据分割为多个m4s格式的片段进行传输和缓存,以提供更好的音频播放体验。 使用audio.m4s文件格式的好处是可以将音频数据分割成若干片段,这样在播放过程中可以根据网络状况和设备性能来动态加载和播放音频片段。这种分段加载的方式可以提高音频播放的流畅度和稳定性,并且可以根据需要进行预加载和缓存,减少用户等待时间。 另外,哔哩哔哩的audio.m4s还支持压缩音频数据,可以有效减小文件大小,提高下载速度和节省存储空间。它采用了先进的音频编码技术,可以提供高质量的音频播放效果。 总的来说,哔哩哔哩的audio.m4s是用于存储和传输音频数据的一种文件格式。它采用分段加载和压缩等技术,为用户提供了更好的音频播放体验,同时也提高了播放效率和节省了存储空间。 ### 回答2: 哔哩哔哩(B站)的audio.m4s是一种音频文件格式,常用于媒体播放器或网络平台上的音频流传输。这种文件格式通常包含了音频数据的编码信息和元数据。 在B站中,audio.m4s文件通常是与视频文件(.mp4或其他格式)配套出现的。这是由于视频文件中除了视频数据外,还需要音频数据来实现声音的播放。为了减小文件体积和提升加载速度,B站会将视频与音频数据分开存储,分别保存为.video.m4s和.audio.m4s文件。这样,用户在播放视频时,会同时加载和播放这两个文件来实现完整的音视频播放体验。 对于audio.m4s文件本身,它采用了MPEG-4 Part 14标准的音频编码,具体编码方式可能是AAC (Advanced Audio Coding)或其他音频编码方式。这样的编码方式能够实现高质量的音频传输和较小的文件体积,使得用户能够流畅地听到视频中的音频。 总的来说,哔哩哔哩的audio.m4s文件是用于存储视频文件中的音频数据的文件格式。它通过特定的音频编码方式来实现高质量的音频传输,从而为用户提供良好的音视频播放体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值