1.问题描述:
给定N个整数Ai以及一个正整数C,问其中有多少对i、j满足Ai-Aj=C
2.输入描述:
第1行输入两个空格隔开的整数N和C,第2~N+1行每行包含一个整数Ai
3.输出描述:
输出一个数表示答案
输入示例:
输出示例:
个人思路:把所输入元素存进数组里,利用for循环无脑对数组中两数做差求绝对值,记录符合条件的数量
#include<stdio.h>
#include<math.h>
int main(){
int N;//输入整数的个数
int C;//满足Ai-Aj条件的数
int i;
int j;
int counter=0;//计数器 ,不赋初始值的话counter初始值=-1
int num;//存放两数之差
int num1;//两数之差的绝对值
scanf("%d %d",&N,&C);
int a[N];
for(i=0;i<N;i++){
scanf("%d",a+i);
}
for(i=0;i<N;i++)
{
for(j=i;j<N;j++)
{
if(j+1<N)
{
num=a[i]-a[j+1];
num1=abs(num);
if(num1==C){counter++;}
}
}
}
printf("%d",counter);
}
有更好的方法欢迎交流 >-<
这篇博客讨论了一个编程问题,即在给定的一组整数中,找出所有数对(i, j)使得Ai - Aj等于一个特定的正整数C。博主提出了一种简单的解决方案,通过两层循环遍历数组并计算两数之差来统计符合条件的数对数量。虽然这种方法可行,但可能效率较低,适合小型数据集。对于大型数据集,可以考虑使用哈希表等数据结构优化搜索过程。


2252

被折叠的 条评论
为什么被折叠?



