欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2019CVTE技术支持软件编程

程序员文章站 2022-03-14 12:22:56
题目:找出长度为M的数组S中求和为1的任意三个数组合个数,举例:S=[-2, 0, 1, 2, -1, 3],结果为:3个([-2, 0, 3], [-2, 1, 2], [0, 2, -1])。 思路:从前往后先选取两个数相加,然后与这两个数后面的数据相加是否为1来判断。 /*注意与这两个数后面的 ......

题目:找出长度为m的数组s中求和为1的任意三个数组合个数,举例:s=[-2, 0, 1, 2, -1, 3],结果为:3个([-2, 0, 3], [-2, 1, 2], [0, 2, -1])。

思路:从前往后先选取两个数相加,然后与这两个数后面的数据相加是否为1来判断。

/*注意与这两个数后面的数据,若不满足,则会重复打印*/

程序:语言c

#include <stdio.h>

int main()
{
  int data[100];
  int m = 0, i, j, times = 0;
  scanf("%d", &m);
  for (i = 0; i < m; i++)
  scanf("%d", data + i);
  for (i = 0; i < m-1; i++)
  for (j = i+1; j < m; j++)
  {
    int temp_data = data[i] + data[j];
    int k;
    for (k = j+1; k < m; k++)
    {
      if (temp_data + data[k] == 1)
      {
        times++;
        printf("%d, %d, %d\n", data[i], data[j], data[k]);
      }
    }
  }
  printf("%d\n", times);
  return 0;
}