我正在研究学校问题。我应该比较两个数组,找出不匹配和完美匹配的数量。示例:我有Array [4] = {8,4,8,8}和ArrayB [4] = {4,8,8,4}。它应该打印出1个完美匹配和3个不匹配。我的代码是这样的:。完美匹配有效,但不匹配则无效。请帮助:Mis_match表示它具有SAME值但在阵列中的不同位置。完美匹配意味着它具有SAME值和两个阵列中的相同位置。
Route::get('api/{locale?}/my-url', 'MyController@myAction');
答案 0 :(得分:1)
你似乎在这里犯了一些错误。第一:
int perfect, mis_match; // need to be intialized.
所以你必须将它们设置为0
。
int perfect = 0;
int mis_match = 0;
您还必须注意:if(A[m]=B[m])
(在您的第一个循环中)应为if(A[m]==B[m])
(您的比较运算符错误)。
在第二个不匹配集中,如果数组大小相同,那么您可以简单地执行array length - matches = mismatches
因为如果它不匹配,那就是不匹配。
答案 1 :(得分:0)
代码:
int a[4] = {8,4,8,8};
int b[4] = {4,8,8,4};
int mc = 0;
for(int i=0; i < 4; ++i)
if (a[i] == b[i])
++mc;
printf("we have %d perfect matches, %d mismatches", mc, 4 - mc);
答案 2 :(得分:0)
无论我理解什么,你都不需要使用任何嵌套循环,这会增加时间复杂度。我认为这很简单 这是代码 -
int main(){
int A[4] = {8,4,8,8};
int B[4] = {4,8,8,4};
int perfect = 0;
int mis_match = 0;
for ( int i = 0; i < 4; i++ ){
if( A[i] == B[i] )
perfect++;
else
mis_match++;
}
printf("we have %d perfect matches, %d mismatches", perfect,mis_match);
答案 3 :(得分:0)
首先,您需要将变量mis_match
初始化为0
。你实际上甚至不需要这个变量。您只需使用第二个数组的每个元素检查第一个数组的每个元素,如果它们匹配,则递增perfect
。然后计算数组大小和perfect
之间的差异。这是不匹配的数量。
您修改后的代码应如下所示
int perfect=0,m=4;
int A[4]={8,4,8,8},B[4]={4,8,8,4};
for(i=0;i<m;i++)
{
if(A[i]==B[i])
perfect++;
}
printf("We have %d perfect matches and %d mismatches",perfect,m-perfect);
您使用了if(A[m]=B[m])
,这是错误的。此语句将在B[m]
中分配A[m]
的值,而不是检查它们是否相等。您需要使用==
运算符来检查它们的相等性。