zoukankan      html  css  js  c++  java
  • uva11039 Building Designing

    题意:给出n个数,请按照他们绝对值的递增顺序排序,且相邻元素不能有相同符号(必须一个大于0,一个小于0),问这样操作后最多有多少个元素

    分析:先调用sort排序然后逐个判断相邻两个元素的乘积是否小于0.  注意结果会溢出,不能用int,可以用double,当然用bool型变量标记也可以

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <vector>
     4 #include <algorithm>
     5 #include <math.h>
     6 #define zz
     7 using namespace std;
     8 bool cmp(double a, double b){
     9     return fabs(a)<fabs(b);
    10 }
    11 int main(){
    12 #ifndef zz
    13     freopen("in.txt", "r", stdin);
    14 #endif
    15     int p;
    16     scanf("%d", &p);
    17     while(p--){
    18         vector<double>v;
    19         int n;
    20         scanf("%d", &n);
    21         int i;
    22         for(i=0; i<n; i++){
    23             int x;
    24             scanf("%d", &x);
    25             v.push_back(x);
    26         }
    27         sort(v.begin(), v.end(), cmp);
    28         double jar = v[0];
    29         int cnt = 1;
    30         for(i=1; i<v.size(); i++){
    31             if(v[i]*jar<0){
    32                 cnt++;
    33                 jar = v[i];
    34             }
    35         }
    36         printf("%d\n", cnt);
    37     }
    38     return 0;
    39 }
  • 相关阅读:
    cookie会话技术
    Vue实现任务列表效果
    Vue实现选项卡效果
    数组API(2)
    数组常用API(1)
    sticky,粘性定位
    了解HTTP协议和TCP协议
    快速排序
    冒泡排序
    【译】x86程序员手册21-6.3.5为操作系统保留的指令
  • 原文地址:https://www.cnblogs.com/zjutzz/p/2909773.html
Copyright © 2011-2022 走看看