题目详情
给你一个数组A[n],请你计算出ans=min(|A[i]+A[j]|)(0<=i,j 例如:A={1, 4, -3},
则:
|A[0] + A[0]| = |1 + 1| = 2.
|A[0] + A[1]| = |1 + 4| = 5.
|A[0] + A[2]| = |1 + (-3)| = 2.
|A[1] + A[1]| = |4 + 4| = 8.
|A[1] + A[2]| = |4 + (-3)| = 1.
|A[2] + A[2]| = |(-3) + (-3)| = 6.
所以ans=1.
输入描述:
有多组测数数据,每组数据有两行,第一行包含一个正整数n(0 输入以文件结束。
输出描述:
对于每组数据,输出相应的答案。
答题说明
输入样例:
3
1 4 -3
1
2
3
-1 -2 -5
3
1 2 3
2
0 5
输出样例:
1
4
2
2
0
我的代码:
#include
#include
int main()
{
int i,j,n,min=0;
while(scanf("%d",&n)==1){
int A[n];
/*数组初始化*/
for(i=0;i<n;i++){
scanf("%d",A[i]);
}
/*求最小的每俩元素之和的绝对值*/
for(j=0;j<n;j++){
for(i=0;i<n;i++){
if(abs(A[i]+A[j])<min)
min=abs(A[i]+A[j]);
}
}
printf("%d",min);
}
return 0;
}
结果失败了,求指点!
用以下代码试试
#include
#include
int main()
{
int i, j, n, min = 0;
while(scanf("%d",&n)==1){
int A[n];
/*数组初始化*/
for(i=0; i<n; i++){
scanf("%d", A[i]);
}
/*求最小的每俩元素之和的绝对值*/
min = 0;
for(j=0; j<n; j++){
for(i=0; i<n; i++){
if (j==0 and i==0){
min = min=abs(A[i]+A[j]);
}
else {
if(abs(A[i] + A[j]) < min)
min = abs(A[i] + A[j]);
}
}
}
printf("%d",min);
}
return 0;
}
int a[n]这么定义数组是不行的,C定义数组的时候N得是常量。
动态接收的数组通过
int *p = (int *)malloc(n*sizeof(int));方式生成
最小值应该初始化为一个很大的值才行!!!!!!!!!!!!
#include
#include
void main(){
int n;
int min = 10000;
scanf("%d",&n);
int a[100];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(abs(a[i]+a[j])<min)
min=abs(a[i]+a[j]);
}
}
printf("%d\n",min);
}
// input an array a[len]
// output minimum distance between array elements
// version 1.
int minInnerDistance( int a[], int len )
{
int m = abs(a[0]-a[1]);
for( int i=0; i<len; i++ ){
for( int j=i+1; j<len; j++ ){
int dist = abs( a[i] - a[j] );
if( dist<m )
m = dist;
}
}
return m;
}
// version 2. using pointers, so it can be much faster
int minInnerDistance( int a[], int len )
{
int m = a[0]<a[1] ? a[1]-a[0] : a[0]-a[1];
int *p = a;
for( int i=0; i<len; i++ ){
int &ai = *(p++);
int *p2 = p + 1;
for( int j=i+1; j<len; j++ ){
int &aj = *(p2++);
int dist = ai<aj ? aj-ai : ai-aj;
if( dist<m )
m = dist;
}
}
return m;
}
动态规划(当然也可以死算),参考
http://blog.csdn.net/njufeng/article/details/25568947
略有不同,修改下