gpt4 book ai didi

c++ - 优化 C 代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:16 26 4
gpt4 key购买 nike

<分区>

假设我们有一个数字数组 {1,2,3} 并且我们希望以尽可能少的轮数使数字相等;其中“转弯”的定义如下:

反过来,您需要按原样固定其中一个元素的值,并每隔一个数字递增 1。

考虑到例如。已经提到 - A={1,2,3} ,目标是使它们相等。我已经完成的是制定逻辑,即使用最少圈数的方法是在每圈中选择最大圈数。

Iteration 1: Hold A[2]=3. Array at end of iteration => {2,3,3}

Iteration 2: Hold A[2]=3. Array at end of iteration => {3,4,3}

Iteration 3: Hold A[1]=4. Array at end of iteration => {4,4,4}

所以,转数 = 3

我写的代码如下:

#include<iostream>
#include<stdio.h>

int findMax(int *a,int n)
{
int i,max;
max=1;
for(i=2;i<=n;i++)
{
if(a[i]>a[max])
{
max=i;
}

}
return max;
}

int equality(int *a,int n)
{
int i;
for(i=1;i<n;i++)
{
if(a[i]!=a[i+1]) return 0;
}
return 1;
}

int main()
{
int a[100],i,count,t,posn_max,n,ip=0;
scanf("%d",&t);
while(ip<t)
{
count=0;
scanf("%d",&n);

for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
while(equality(a,n)==0)
{
posn_max=findMax(a,n);

for(i=1;i<=n;i++)
{
if(i!=posn_max)
{
a[i]=a[i]+1;
}
}
count++;

}
printf("%d\n",count);
ip++;
}
return 0;
}

这给了我我需要的正确答案。但我想进一步优化它。

我的时间限制是 1.0 秒。但是判断网站告诉我我的代码需要1.01s。谁能帮帮我?

据我所知,与 cout/cin 相比,我使用了 scanf/printf 语句,以优化输入/输出部分。但是我还应该在哪些方面做得更好?

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