暑假第三天

7月5日

今天完成了数据结构第三题;寻找大富翁,下面是我的源代码

#include <iostream>
#include <vector>
using namespace std;
const int max_size = 1000010;
int num[max_size];

void sift(int* num, int low, int high) {
int i = low;
int j = 2 * i;
int temp = num[i];
while (j <= high) {
if (j < high && num[j] < num[j + 1])
++j;
if (temp < num[j]) {
num[i] = num[j];
i = j;
j = 2 * i;
} else {
break;
}
}
num[i] = temp;
}

int main() {
int n, m, temp, count = 0;
cin >> n >> m;
for (int i = 1; i <= n; ++i)
cin >> num[i];

if (n < m) m = n;

for (int i = n / 2; i >= 1; --i)
sift(num, i, n);

for (int i = n; i >= 2; --i) {
temp = num[1];
num[1] = num[i];
num[i] = temp;
++count;
if (count == 1)
cout << num[i];
else
cout << " " << num[i];
if (count == m)
break;
sift(num, 1, i - 1);
}

if (m == n)
cout << " " << num[1];
cout << endl;

return 0;
}

posted @   努力不掉发  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2023-07-06 第二周第五天
点击右上角即可分享
微信分享提示