gpt4 book ai didi

c - 我试图编写一个函数来检查两个数组是否相互排列

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

通过使用计数。规定数组的值只能在1到100之间。看来我的功能不对我不明白为什么。这是我的功能:

int CheckPermutation3(int arr1[], int arr2[], int size)
{
int count1[100], count2[100]; //the size 100 because in that case values are only between 1 and 100//
int i;

for(i=0; i<100; i++)
{
count1[i]=0;
count2[i]=0;
}
for(i=0;i<size;i++) //counting the elements of each array//
count1[arr1[i]]++;
for(i=0;i<size;i++)
count2[arr2[i]]++;
for(i=0;i<100;i++) //comparison//
if (count1[i]!= count2[i])
return 0;
return 1;
}

最佳答案

您的实现没有任何问题:它不起作用的唯一原因是项目超出范围,因为这会导致未定义的行为。

您可以通过使用单个数组来稍微简化代码,如下所示:

int balance[100] = {0}; // Initialize all elements to zero
for (i = 0 ; i < size ; i++) {
balance[arr1[i]-1]++;
balance[arr2[i]-1]--;
}
for(i=0;i<100;i++) {
if (balance[i] != 0) {
return 0;
}
}
return 1;

关于c - 我试图编写一个函数来检查两个数组是否相互排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945052/

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