gpt4 book ai didi

c - 在C编程中通过比较或其他方式根据结构体数组找到最小数量

转载 作者:行者123 更新时间:2023-11-30 16:45:42 25 4
gpt4 key购买 nike

我正在尝试找到一种方法来找到要经过的最小车道数。对于这个程序,我必须按照以下链接中的图表所示的方向遍历结构中的所有类:

Direction instruction diagram

在提供的示例程序中:

我必须经过a、b、d和e车道。但是,根据方向,需要经过的最少车道数为6。因为我需要在 d 上升之前下降,并且需要在 e 之后返回。

#include <stdio.h>
#include <stdlib.h>

#define MAX_CLASSES 4

typedef struct{
char alpha;
}class_t;

int
main(int argc, char *argv[]) {
int i, n=MAX_CLASSES;
class_t classes[MAX_CLASSES] = {
[0]={.alpha = 'a'},
[1]={.alpha = 'b'},
[2]={.alpha = 'd'},
[3]={.alpha = 'e'},
};

printf("the letters are:");
for (i=0; i<n; i++){
printf(" %c", classes[i].alpha);
}
printf("\n");

printf("minimum lane is.....?");



return 0;
}

<小时/>

另一个例子,如果我得到 b 和 c。然后我必须先下去,然后在b处上去,然后在c处下来后,我需要再回去,所以最小车道数是4。

另一个例子,如果我有 a 和 b,那么最小车道数是 2,因为我可以在 a 处向下并在 b 处返回。

有关结构中字母的一些信息:

  • 不会有多余的字母

  • 它们按升序排列

  • 它们可以是任意长度(n可以是任何正整数)

知道如何计算 c 中的最小车道数吗?如果可以的话我应该使用比较吗?

这是我到目前为止所拥有的:

#include <stdio.h>
#include <stdlib.h>

#define MAX_CLASSES 3

typedef struct{
char alpha;
}class_t;

int
main(int argc, char *argv[]) {
int i, j, lane, n=MAX_CLASSES;
class_t classes[MAX_CLASSES] = {
[0]={.alpha = 'a'},
[1]={.alpha = 'b'},
[2]={.alpha = 'c'},
};

printf("the letters are:");
for (i=0; i<n; i++){
printf(" %c", classes[i].alpha);
}
printf("\n");

if(n==1){
lane = 2;
}

if(n>1){
lane = 0;
for(i=0; i<j; i++){
for(j=i+1; j<n; j++){
if(classes[i].alpha%2==1){
if(classes[j].alpha%2==1){
lane += 4;
}else{
lane += 2;
}
}else{
lane = 1;
if(classes[j].alpha%2==1){
lane += 4;
}else{
lane += 2;
}
}
}
}
}
if(classes[n-1].alpha%2==1){
lane +=1;
}

printf("minimum lane is %d", lane);



return 0;
}

最佳答案

这里是代码的建议版本:

  1. 干净地编译
  2. 不包含“魔法”数字
  3. 正确计算变量n的值

现在是代码:

#include <stdio.h>

struct lanes
{
char alpha;
};
typedef struct lanes class_t;


int main( void )
{
int min_lane = 6;

class_t classes[] =
{
[0]={.alpha = 'a'},
[1]={.alpha = 'b'},
[2]={.alpha = 'd'},
[3]={.alpha = 'e'},
};

int n = sizeof( classes ) / sizeof( class_t );

printf("the letters are:");

for (int i=0; i<n; i++)
{
printf(" %c", classes[i].alpha);
}

printf("\n");

printf("minimum lane is %d", min_lane);

return 0;
}

但是,该代码毫无意义,因为没有车道的概念,也没有明确定义车道如何穿越。

请重新表述问题以表明您想要实现的目标。

关于c - 在C编程中通过比较或其他方式根据结构体数组找到最小数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006604/

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