zoukankan      html  css  js  c++  java
  • PTA 最少分成几组

    PTA 最少分成几组

    给定一个包含n个数的数列,由a1,a2,....,an组成,现在将这n个数分成若干组,使得每组中任意两个数|ai-aj|>1,(i!=j)。这个数列中的n个数最少可以分成几组呢?

    输入格式:

    第一行包含一个整数n(1≤n≤1000)。 第二行包含n个整数a1,a2,...,an(1≤ai≤10000,所有ai互不相同)。

    输出格式:

    输出仅一个整数,表示数列中n个数最少可以分成的组数。

    输入样例1:

    2
    1 2
    

    输出样例1:

    2
    

    输入样例2:

    10
    2 8 13 4 35 22 33 11 6 15
    

    输出样例2:

    1
    

    思路

    • 刚开始是想找到最长的且差值为1的连续数字的长度即可。
    • 经过wxdl的提醒,其实答案只有0,1两个
    • 比如345,3和5丢一组,4再丢一组,而不是3,4,5各丢一组
    • 往大的说,所有数字我们都可以进行错开处理(也就是说题目一旦出现差值为一,我们即可立马输出2这个答案)
    • 注意:题目并不会出现相同的数字

    代码

    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    int a[1001];
    int main()
    {
    	int n;
    	cin>>n;
    	for(register int i=0;i<n;i++)
    	{
    		cin>>a[i];
    	}
    	sort(a,a+n);
    	for(register int i=1;i<n;i++)
    	{
    		if(a[i]-a[i-1]==1)
    		{
    			cout<<2;
    			return 0;
    		}
    	}
    	cout<<1;
    	return 0;
    }
    
  • 相关阅读:
    用户场景描述
    个人工作总结(第一阶段)
    个人进度报告
    《构建之法》阅读笔记05
    《构建之法》阅读笔记04
    《构建之法》阅读笔记03
    2020寒假学习(14)
    2020寒假学习(13)
    2020寒假学习(12)
    2020寒假学习(11)
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/14512695.html
Copyright © 2011-2022 走看看