以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。相关的知识,希望对你有一定的参考价值。

main()
int x[10],a[9],I;
for(I=0; I<10; I++) scanf("%d",&x[I]);
for( 【11】 ; I<10; I++ )
a[I-1]=x[I]+ 【12】 ;.
for(I=0; I<9; I++) printf("%d ",a[I]);
printf("");

答案是:【11】 I=1
【12】 x[I-1] 求详解

因为数组是从x[0],x[1]。。。这样依次排列的所以x数组中的第一个数是x[0].根据for循环中的a[i-1]可知,i=1,这样才能保证运算从a[0]开始。因为是相邻两个元素依次相加,所以应是x[i]+x[i-1],这样便保证了第一组数相加为a[0]=x[0]+x[1] 参考技术A #include<stdio.h>
int main (void)

int x[10];
int i;
int a[9];
for(i=0;i<10;i++)
scanf("%d",&x[i]);
for(i=0;i<10;i++)
a[i-1]=x[i]+x[i-1];
for(i=0;i<10;i++)
printf("%d\n",a[i]);
return 0;

算法练习——和最接近于零的子数组

问题描述:

求对于长度为N的数组A,求子数组的和接0的子数组,要求时间复杂度O(NlogN) 

(1) 求出所有的sum[i]  sum[i]表示A的前 项和
(2) 对sum[-1,0,...,N-1]排序,然后计算sum相邻元素的差的绝对值,最小记为 min1   
(3) min1 : 在A中任意取两个相邻子数组的和,求两者差的最小值。(相当于 i——j和的最小值)
(4) min2 : A的前k个元素的和的绝对值的最小值(为sum[0,1....n-1]中的最小值)
(5) min1和min2更小者,即为所求。

 

 1 public class SumIsZero {
 2     public static int SumMinIsZero(int[] a, int length){
 3         int[] sum = new int[length];
 4         //同时定义sum[-1] = 0;
 5         //sum[-1] = 0;
 6         //求前n项的和并且存在sum数组中,在从里面求出绝对值最小的数
 7         sum[0] = a[0];
 8         int i;
 9         //求出所以的sum[i]
10         for (i = 1; i < length; i++) {
11             sum[i] = sum[i-1]+a[i];
12         }
13         int min2 = Math.abs(sum[0]);
14         for (i = 0; i < sum.length; i++) {
15             if (Math.abs(sum[i]) < min2) 
16                 min2 = Math.abs(sum[i]);
17         }
18         
19         //同时对数组sum做排序
20         quickSort(sum, 0, length-1);
21         
22         //求sum排序之后的相邻元素的最小值min1
23         int min1 = Math.abs(sum[0]-sum[1]);
24         for (int j = 2; j < sum.length; j++) {
25             if (Math.abs(sum[j] - sum[j-1]) <min1) 
26                 min1 = Math.abs(sum[j] - sum[j-1]);
27         }
28         return (min1 > min2 ? min2:min1);
29     }

 

快速查找(保证满足题目的时间复杂度)

 1 public static void quickSort(int[] a, int low,int high){
 2         int i,j;
 3         int temp;
 4         
 5         i=low;
 6         j=high;
 7         temp=a[low];                //取第一个元素为标准数据元素
 8         //下面的对左边和右边的扫描定位反复进行,直到左边的下标i大于或者等于右边元素的下标为止
 9         while(i<j){
10             //在数组的右边扫描,如果数大于哨兵,则不改变位置,否则将j上的元素马上移动到i位置,
11             //并且马上扫描左边
12             while( i < j&& a[j]>=temp) j--;
13             if (i<j) {
14                 a[i]=a[j];
15                 i++;
16             }
17             
18             //在数组的左边扫描,如果数小于哨兵,则不改变位置,否则将左边i处的位置交换到
19             //右边j处的位置,并且转回扫描右边
20             while( i < j&& a[i] < temp) i++;
21             if (i<j) {
22                 a[j]=a[i];
23                 j--;
24             }
25         }
26         
27         a[i]=temp;
28         
29         //对左边的子集合做递归查询
30         if (low<i) {
31             quickSort(a, low, i-1);
32         }
33         //对右边的子集合做递归查询
34         if (i<high) {
35             quickSort(a, j+1, high);
36         }
37     }

 

 

但是以上算法只是简单的得到了最接近零的子数组的和,并没有得到所有的子数组。

 

以上是关于以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。的主要内容,如果未能解决你的问题,请参考以下文章

、设数组a有10个整型元素,编程求出a中各相邻两个元素的和,并存入数组b中,然后输入

数组a中有10个元素,求a中各相邻两个元素的和并存于数组b中并按3个一行输出。

在 JavaScript 中,如何求出两个数组的交集和差集?

2021-05-30:数组的元素个数一定大于2,请问两个不相邻元素的和的最大值是多少?

、输入4×4的数组,编写程序实现下列功能?

一维数组求最大子数组的和(首位相邻32位)