程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVA - 10125 - Sumsets (暴力枚舉 + STL)

UVA - 10125 - Sumsets (暴力枚舉 + STL)

編輯:C++入門知識

UVA - 10125 - Sumsets (暴力枚舉 + STL)


\

 

 

 

思路:剛開始的思路是直接暴力枚舉O(n3),感覺會超時,不過還是試著敲了下,居然過了,其中用STL中的set來找最後一個數,最好先排下序,然後再枚舉d(要求的)和a,b,再用set去找c

 

AC代碼:

 

#include 
#include 
#include 
#include 
#include 
using namespace std;

int a[1005];
int flag, ans;

int main() {
	int n;
	while(scanf("%d", &n), n) {
		set num;
		for(int i = 0; i < n; i++) {
			scanf("%d", &a[i]);
			num.insert(a[i]);
		}
		sort(a, a + n);
		
		flag = 0; ans = 2;
		for(int i = n - 1; i >= 0 && !flag; i--) {
			for(int j = 0; j < n && !flag; j++) {
				for(int k = j + 1; k < n && !flag; k++) {
					int tmp = a[i] - a[j] - a[k];
					if(i != j && i != k && tmp != a[i] && tmp != a[j] && tmp != a[k])
						if(num.count(tmp) ) {
							flag = 1;
							ans = a[i];
						}
				}
			}
		}
		if(flag) printf("%d\n", ans);
		else printf("no solution\n");
	}
	return 0;
} 


 

 

 

 

 

 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved