zoukankan      html  css  js  c++  java
  • 51Nod-1267-4个数和为0

    51Nod-1267-4个数和为0

    给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No"。
    Input
    第1行,1个数N,N为数组的长度(4 <= N <= 1000)
    第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
    Output
    如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No"。
    Input示例
    5
    -1
    1
    -5
    2
    4
    Output示例
    Yes

    题解: 

    经典的4sum问题可以解决,时间复杂度O(n^3) 

    #include <cstdio> 
    #include <cstdlib> 
    #include <algorithm> 
    using namespace std; 
    const int MAXN = 1000 + 5; 
    
    int n, num[MAXN]; 
    
    int main(){
    	freopen("in.txt", "r", stdin); 
    
    	int flag, tmp; 
    	while(scanf("%d", &n) != EOF){
    		for(int i=0; i<n; ++i){
    			scanf("%d", &num[i]); 
    		}
    		sort(num+0, num+n); 
    		flag = 0; 
    		for(int i=0; i<n; ++i){
    			if(flag){ break; }
    			for(int j=i+1; j<n; ++j){
    				if(flag){ break; }
    				int l = j+1, r = n-1; 
    				while(l < r){
    					tmp = num[i] + num[j] + num[l] + num[r]; 
    					if(tmp == 0){
    						flag = 1; 
    						break; 
    					}else if(tmp > 0){
    						r--; 
    					}else{
    						l++; 
    					}
    				}
    			}
    		}
    		if(flag){
    			printf("Yes
    ");
    		}else{
    			printf("No
    ");
    		}
    	}
    	return 0; 
    }
    

      

  • 相关阅读:
    Introspector
    jython awt demo
    java中dom解析xml
    【luogu1816】忠诚
    代码调试技巧【OI缩水版】
    【UOJ78】二分图最大匹配
    【51nod】最大子段和
    【LibreOJ109】【模板】并查集
    简单的卡常数【OI缩水版】
    QQbot
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/6389939.html
Copyright © 2011-2022 走看看