gpt4 book ai didi

c - C 中的加扰数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:11 24 4
gpt4 key购买 nike

我是 C 的新手!所以我得到两个等长的整数数组作为输入和一个 len,它总是等于两个数组的 len。我应该验证数组 A 中的整数是否等于数组 B 中的整数,顺序无关紧要。

例如,以下是可以的:

A[:)] = {1,2,3}
B[:(] = {3,2,1}

但是下面的不行:

A[:)] = {1,1,1}
B[:(] = {1,2,3}

这是我在 main.c 中放入的示例测试代码。但是,我的代码无法产生正确的答案。但我不确定为什么,我想知道是否有人可以帮助指出我哪里出错了。提前致谢!

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

//flag = 1 means the two arrays are equal, or empty
//flag = 0 means that the two arrays are not equal

int scrambled( int a[], int b[], int len)
{
int i = 0;
int j = 0;
int flag = 0;

if (len == 0)
{
return 1;
}

for(i = 0; i < len; i++)
{
flag = 0;

for( j = 0; j < len; j++)
{
if( a[i] == b[j])
{
flag = 1;
}
}

if(flag == 0)
{
printf("Number not found\n");
return flag;
}

}

printf("Here is flag: %d\n", flag);
return flag;
}

int main()
{
int array[100] = {1,1,1};
int array2[100] = {1,2,3} ;

int len = 3;

scrambled(array,array2,len);
}

最佳答案

您的代码只检查 a[] 中的每个数字是否都存在于 b[] 中,而不是相反。a[] 只包含 1 --> {1,1,1}。它针对 b[] 检查所有三个 1,并且每次在 b[] 中找到 1。

该代码还应检查 b[] 中的每个数字是否都存在于 a[] 中。如果您添加了它,那么您的代码就完成了。

这有效..(注意冒泡排序对于大型数组来说很慢!)

#include <stdio.h>

static void bubble_sort_ints(int a[], int len)
{
int i, j, t;
for (i = 0; i < len - 1; i++) {
for (j = i + 1; j < len; j++) {
if (a[i] > a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}

static int scrambled(int a[], int b[], int len)
{
bubble_sort_ints(a, len);
bubble_sort_ints(b, len);

int i;
for (i = 0; i < len; i++) {
if (a[i] != b[i]) {
return 0;
}
}
return 1;
}

int main(void)
{
int a[5] = {1, 2, 2, 2, 3};
int b[5] = {1, 1, 2, 3, 3};

printf("%s\n", scrambled(a, b, 5) ? "ok" : "not ok");
return 0;
}

关于c - C 中的加扰数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873998/

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