アルゴリズム与えられた数は配列中の2つの要素の和であり,配列の下付きを求める.

5621 ワード

          ,        
   sum.c:

        /*************************************************************************
        > File Name: sum.c
        > Author: zhoulin
        > Mail: [email protected]
        > Created Time: Mon 18 Apr 2016 08:33:25 PM CST
 ************************************************************************/

#include <stdio.h>
#include <string.h>
#define max 1024
void target(int a[],int len,int target)
{
    fprintf(stdout,"
***** %p, %d, %d*****************
",a,len,target); int i,j=0; int tmp[max];// a tmp int flag[max]; memset(&tmp,-1,sizeof(int)*max); memset(&flag,-1,sizeof(int)*max); fprintf(stdout,"
***************source array*******************
"); for(i = 0; i < len; i++) { //tmp[1] = 0;tmp[2]=1;tmp[7]=3;tmp[8]=4;tmp[9]=5; tmp[a[i]] = i; fprintf(stdout," -->%d[index=%d]
",a[i],i); } fprintf(stdout,"
************* , 2 , *******************
"); for(i = 0; i < len; i++) { int v = target - a[i];// if(v <= 0 || target <= a[i]) continue; if(tmp[v] >= 0 && flag[a[i]] == -1 && flag[v] ==-1) { fprintf(stdout," target = %d (%d,%d) --> [%d,%d]
",target,a[i],a[tmp[v]],i,tmp[v]); flag[a[i]] = (j++); flag[v] = j; } } fprintf(stdout,"******************** O(n)*********************
"); } int main(void) { int a[10] = {1,2,7,9,8,3,6,5,4,10}; target(a,10,9); return 0; }