gpt4 book ai didi

c - 返回包含该行从左到右学生高度的数组

转载 作者:行者123 更新时间:2023-11-30 20:36:19 26 4
gpt4 key购买 nike

在学校里,学生们被要求按照高度排队,他们总是随机选择自己的位置,这让老师不高兴,有一天早上,老师注意到了他们的座位位置,第二天早上他会检查他们的位置以确保它们完全相同。

每个学生只记得那天早上的一件事:他左边比他高的学生人数有 N 个学生,每个学生的高度在 1 到 n 之间不同,使用此信息你必须根据该信息重建座位安排早晨。

给定一个 int[],其中第 i 个元素表示高度为 i 的学生左边较高的学生的数量(其中 i 是从 1 开始的索引)。返回一个 int[],其中包含该行中从左到右学生的高度。

注意:输入保证产生有效且唯一的输出。

输入规范:您的函数应该接受以下输入:输入1:N输入 2:n 个整数的数组(left[])

输出规范:你需要返回包含该行从左到右学生高度的int[]。

示例:

输入:

输入1:4

输入2:{2,1,1,0}

输出:{4,2,1,3}

说明:高度1的学生记得他左边有2个比他高的学生。高度2的学生记得他左边有1个比他高的学生。高度 3 的学生记得他左边有 1 个比他高的学生。高度 4 的学生记得他左边没有比他高的学生。

下面是我的代码:

  #include<stdio.h>
#include<string.h>

int* uniqueValue(int input1,int input2[])
{
int left, current;
static int arr[4] = {0};
int i = 0;

for(i=0;i<input1;i++)
{
current = input2[i];
left = 0;

if(current > 0)
left = arr[(current-1)];

if(left == 0 && arr[current] == 0)
{
arr[current] = input1-current;
}
else
{
for(int j=(i+1);j<input1;j++)
{
if(arr[j] == 0)
{
left = arr[(j-1)];
arr[j] = left - 1;
}
}
}
}


return arr;
}

我的输出不符合预期,我该如何改进我的代码。

最佳答案

由于我无法快速理解您的问题,因此我尝试提出自己的解决方案。我希望它有帮助。我根据您的案例场景和我编写的另一个案例对其进行了测试,并且它对两者都有效。

 #include <iostream>

using namespace std;

int* get_line_order(int in1, int *in2);

int main()
{
int in[] = {7,0,1,4,3,1,0,1,1,0};
int *out;
int N = 10;

out = get_oringinal(N, in);

for(int i = 0; i<N; i++)
cout << out[i] << endl;

return 0;
}

int* get_line_order(int in1, int *in2)
{
int *out = new int[in1];
int i,j,k, count;

//initializes out array
for(i=0; i<in1; i++)
out[i] = in1;

//loops through in2
for(i=0; i< (in1-1); i++)
{
count = 0;
//loops through out
for(j=0; j< (in1-1); j++)
{
if(out[j] > (i+1))
count++;
if(count == in2[i])
{
for(k = j+1; k<in1; k++)
if(out[k] == in1)
{
out[k] = i+1;
break;
}
break;
}
else if(count > in2[i])
{
for(k = j; k<in1; k++)
if(out[k] == in1)
{
out[k] = i+1;
break;
}
break;
}
}
}

return out;
}

关于c - 返回包含该行从左到右学生高度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36458261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com