spontaneous 发表于 2020-12-23 16:37:02

求本题答案,不适用函数方法

给一个整数数组,使得它们的和等于一个给定的数 target,编写函数返回这两个值的下标,并且第一个下标小于第二个下标,注意这里的下标范围是【1,m】,不是以0开始。例:给出nums = ,target = 9,则返回 若不存在,则返回
示例输入

2 7 11 15

9
示例输出


风过无痕1989 发表于 2020-12-23 16:56:55

本帖最后由 风过无痕1989 于 2020-12-23 17:19 编辑

是某两个元素之和= target 吧?
#include <stdio.h>
int main()
{
        int i, j, k, flag = 0, target, arr;
        printf("输入目标值:");
        scanf("%d", &target);
        printf("输入数组元素:");
        for (i = 0;i < 4;i++)
        {
                scanf("%d", &arr);
        }
                       
        for (i = 0;i < 4;i++)
        {
                if (arr + arr == target)
                {
                        j = i;
                        k = i + 1;
                        flag = 1;
                }
                else if (arr + arr == target)
                {
                        j = i;
                        k = i + 2;
                        flag = 1;
                }
        }
               
        if(flag == 1)
          printf("%d, %d\n",j + 1,k + 1);
        else
          printf("%d,%d\n", 0, 0);
}

spontaneous 发表于 2020-12-23 18:18:10

风过无痕1989 发表于 2020-12-23 16:56
是某两个元素之和= target 吧?

抱歉,需要用python做这个

太阳总会升起 发表于 2020-12-23 21:12:10

注释在代码里了
def fun(nums, target):
    length = len(nums)
    for i in range(length):
      for j in range(length):
            # 逐个相加判断是否等于target
            if nums + nums == target:
                # 因为是两个的和,所以两个数不能是同一个,这里剔除同一个数的情况
                if i != j:
                  # 返回从 1 开始,给索引值加 1
                  return (i+1, j+1)
            else:
                return (0, 0)
页: [1]
查看完整版本: 求本题答案,不适用函数方法