【发布时间】:2018-03-13 15:27:27
【问题描述】:
所以我要做的是编写一个代码来查找数组中的一对数字。当只有一对数字时,下面的代码可以完美运行。
#include<stdio.h>
main()
{
int arr[10], i, j, pairs = 0;
int n;
scanf("%d", &n);
for(i = 0; i<n; i++)
{
scanf("%d", &arr[i]);
}
for(i = 0; i<n; i++)
{
for(j = i+1; j<n; j++)
{
if(arr[i] == arr[j])
{
pairs++;
}
}
}
printf("%d", pairs);
}
我想让它在有 3 个相同元素时工作。 例如,arr[5] = 1, 1, 1, 2, 2 它应该返回 2 对(1,1 和 2,2,另外还有 1 个),但它返回 4 对,而不是我的代码!
谢谢。
【问题讨论】:
-
我建议你先对数组进行排序,然后简单地检查相邻的数字。
-
我建议您花一些时间阅读 Eric Lippert 的 How to debug small programs,并了解如何使用调试器逐行执行您的代码。我还建议您花更多时间尝试用纸笔评估您的算法,并在尝试编写代码之前先尝试想出一些可能会更好的方法。
-
建议的输入数据确实有4对。
-
当然:1,1,1,3对。 1,x,1,然后是 1,1,x,然后是 x,1,1 使用您的算法,因为在计算时您没有消除。
-
1) 一对应该由两个连续的元素组成吗? 2) 一个元素只能成对使用吗?
标签: c