zoukankan      html  css  js  c++  java
  • 数组里任意两值求和,求和值等于target时,输出两元素的下标,找出所有满足要求的组合

    要求:给定一个目标值target,一个数组,数组里任意两个数求和,和若等于target,输出这些组合的下标,不重复计算

    例:array=[1,2,5,,6,3]    target=7

    输出:

    0,3(0是元素1的下标,3是元素6的下标)(不重复计算:1+6=7 , 6+1=7,只输出一次下标)

    1,2

    流程:

    1、键盘输入数组;

    2、设置target值;

    3、统计所有满足要求的组合并输出

    #include <iostream>
    #include<vector>
    #define number 5
    
    using namespace std;
    
    vector<vector<int> > search(int arr[], int target)
    {
        vector<vector<int> >result;
        vector<int> res;
        int add=0;
        int i,j;
        for(i=0;i<number-1;i++)
        {
            for(j=i+1;j<number;j++)
            {
                add=arr[i]+arr[j];
                if(add==target)
                {
                res.push_back(i);
                res.push_back(j);
                result.push_back(res);
                }
                res.clear();            
            }
        }
        return result;
        
    }
    
    int main()
    {
        vector<vector<int> > temp;
        int target=0;
        int num_arr[number]; 
        int i=0;
        cout<<"输入一个数列:";
        for(i=0;i<number;i++)
        {
            cin>>num_arr[i];
        }
        for(i=0;i<number;i++)
        {
            cout<<num_arr[i]<<" ";
        }
       cout<<"输入target值;";
       cin>>target;
        temp=search(num_arr,target);
        vector<vector<int> >::iterator iter;
        for (iter = temp.begin(); iter != temp.end(); iter++)   //遍历二维vector
        {
            for (int i = 0; i < (*iter).size(); i++)
             {
             cout << (*iter)[i] << " " ;
             }
             cout<<endl;
        }
         
    
     } 

     定义的search子函数返回结果是一个二维的vector,作用是保存所有满足结果的下标组合

    它的结构如下图示意(有点丑不要介意):还是以最开始举得例子说:二维vectro类似与二维数组,可是它的长度是可以不断加的,可数组不能,在事先不知道组合个数的情况下,用vector是较好的选择。可以从示意图存入的值为满足要求的所有组合的下标,(0,3)是二维向量的第一个元素,它自己本身也是一个向量,只不过本身的长度在这里都是2,所以也可以把这里替换为一个长度为二的数组;(1,2)为二维向量的第二个元素。

     程序运行结果:我这里把数组的长度改为10了,所以输入数列有十个数,target设置为10,输出了所有的组合

  • 相关阅读:
    mvc多级views目录
    JSP中文乱码总结
    sql查询指定表外键约束
    eclipse设置汉化
    c#序列化json字符串及处理
    获取需要登录认证的远程数据
    vs2013 括号自动配对样式设置
    c#中事物使用
    ListView遍历每个Item出现NullPointerException的异常
    gen目录无法更新,或者gen目录下的R.JAVA文件无法生成
  • 原文地址:https://www.cnblogs.com/victorywr/p/12752985.html
Copyright © 2011-2022 走看看