zoukankan      html  css  js  c++  java
  • P1420 最长连号

    P1420   最长连号

     本题是一道常见的模拟题目

     具体解题步骤如下:

    已经输入给出数据个数,所以就以此做循环条件,每次输入一个数,判断是否为上一个数加一(连续自然数)。

    1,如果是,则临时计数(sum)加一,

    2,如果不是(断了),则将临时计数(sum)清零。

    在此期间若临时计数超过答案(初始值为1),则把临时计数的值赋给答案,这样临时计数清零后可保留目前最长的连续数个数。最终每个数据都判断完成后输出答案

    但要注意的是,计数时包括第一个数,所以临时计数和答案的初值都应为1,这样计数才会算上第一个,清零时其实是清“一”

    代码如下:

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int n,a[10000]={},i,sum=0,maxn=0;
     6     cin>>n;
     7     for(i=0;i<n;i++)
     8     {
     9         cin>>a[i];
    10     }
    11     for(int i=0;i<n;i++)
    12     {
    13         if(a[i]+1==a[i+1])
    14             sum++;
    15         else sum=0;
    16         if(sum>maxn)
    17             maxn=sum;
    18     } 
    19     cout<<++maxn;
    20     return 0;
    21 } 

    本题比较简单,下面拓展一下排序与去重的代码。(方便使用)

     1 #include <iostream>
     2 #include <algorithm>   // sort(), unique()
     3 #include <functional>  // less<int>()
     4 using namespace std;
     5 int main()
     6 {
     7     int p,i;
     8     cin>>p;
     9     int a[p];
    10     for(i=0;i<p;i++)
    11         cin>>a[i];
    12     sort(a,a+p,less<int>());  // 排序
    13     int n=unique(a,a+p)-a;   // 去重
    14     for (i=0;i<n;i++)
    15         cout<<a[i]<<" ";
    16 }
  • 相关阅读:
    一些前台技巧
    javascript中的面向对象
    vs.net 常用快捷键
    js和C#中的进制转换方法
    MFC中CDC相关图形,文本的一些使用方法(转)
    poj1505
    poj1401
    poj2533
    poj1504
    poj1384
  • 原文地址:https://www.cnblogs.com/Kyriech-Francis/p/Answer_P1420.html
Copyright © 2011-2022 走看看