2014-1 Популярный ментальный арифметический тест Zhenti Abacus

2014-1 Тест на ментальную арифметику Abacus
Описание задачи
Ментальная арифметика Abacus - это своего рода вычислительная технология, которая выполняет быстрые вычисления, моделируя изменения в счетах в мозге. Тренировка ментальной арифметики Abacus может не только развить интеллект, но и сделать повседневную жизнь более удобной, поэтому она была популяризирована во многих школах.
Учитель счёта и ментальной арифметики в школе применяет метод тестирования, чтобы быстро проверить складывающую способность счёта и ментальной арифметики. Он произвольно сгенерировал набор положительных целых чисел с разными числами в наборе, а затем попросил учеников ответить: сколько чисел в наборе в точности равно сумме двух других (разных) чисел в наборе?
Недавно учитель поставьте несколько тестовых вопросов, пожалуйста, помогите найти ответ.
Есть
две строки ввода . Первая строка содержит целое число n, которое представляет количество положительных целых чисел, заданных в вопросе теста.
Во второй строке n положительных целых чисел, и каждые два положительных целых числа разделены пробелом, чтобы указать положительные целые числа, указанные в контрольных вопросах.
Выходные данные
состоят из одной строки и содержат целое число, которое представляет ответ на вопрос теста.
кейс:

входить
4 1 2 3 4
Выход 2

Намекать

[Пример описания] 1 + 2 = 3, 1 + 3 = 4, поэтому ответ, соответствующий требованиям теста, - 2. Обратите внимание, что слагаемое и слагаемое должны быть двумя разными числами в наборе.

【Данные показывают】

Для 100% данных 3≤n≤100, а размер положительного целого числа, указанного в тестовом вопросе, не превышает 10 000.
Анализ мышления В
этом вопросе следует обратить внимание на следующие детали, a + b = c, a! = B, например, 1 + 4 = 5, 2 + 3 = 5, эти два ответа можно рассматривать только как один метод.

  1. Сначала определите два массива, a [10001], gve [10001] = {0}, массив gov [] используется для обозначения суммы слагаемого и слагаемого, чтобы избежать ситуации, когда один результат соответствует двум значениям. (1 + 4 = 5, 2 + 3 = 5,)
    анализ кода
	scanf("%d",&n);
	for(i=1;i<=n;i++){
    
    
		scanf("%d",&a[i]);
	}

Вход управления циклом (простой)
полный код

#include<stdio.h>
int main (){
    
    
	int a[10001],n,covd=0,gve[10001]={
    
    0},j,i,sum;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
    
    
		scanf("%d",&a[i]);
	}
	//三重循环暴力演算法
	for(int i=1;i<=n;i++){
    
    
	
		for(j=i+1;j<=n;j++){
    
    
		
			for(int k=1;k<=n;k++){
    
    
				//核心判断语句,判断下标为k的数组元素是否等于下标为i,j数组元素之和,并判断a[i],a[j]是否相等
				//且数组gov[k]==0,因为当gov!=0时,证明该值已经存在了。
				if(a[k]==a[i]+a[j]&&a[i]!=a[j]&&gve[k]==0){
    
    
					covd++;//covd计数器
					gve[k]=1;//在数组gve中标记k下标下的元素,令它等于1.避免重复
				}
			}
		}
	}
	printf("%d",covd);
	return 0;
}
4
1 2 3 4
2
--------------------------------
Process exited with return value 0
Press any key to continue . . .v

Для этого вопроса я использовал трехцикловое исчисление насилия. Я думаю, что это очень круто, поэтому временная сложность должна быть слишком большой, поэтому я могу продолжить ее оптимизацию.
Тип вопроса несложный, главное - мысль.

рекомендация

отblog.csdn.net/qq_52044923/article/details/110319831
рекомендация