码迷,mamicode.com
首页 > 其他好文 > 详细

[Math_Medium] 781. Rabbits in Forest

时间:2018-08-21 21:44:34      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:class   des   vector   problems   分析   rip   自己   相互   tor   

原题:781. Rabbits in Forest

题目大意:

森林里每只兔子报告说有多少只兔子和它的颜色一样,求森林里最少有几只兔子?

解题思路:

首先确定有多少只兔子的说法相同,假设有 a[i] 只兔子都说和它颜色相同的兔子有 i 只,那么要分析 a[i] 与 i 的关系。比如说,3只兔子说和它同色的兔子有10只,那么至少有11兔子;如果8只兔子说它同色的兔子有10只,那么至少有11只兔子;如果10只兔子说和它同色的兔子有10只,那么至少有11只兔子;如果有11只兔子都说和它同色的兔子有10只,那么至少有11只兔子(每只兔子和另外10只同色);如果有12只兔子都说和它同色的兔子有10只,那么至少有22只兔子(首先前面11只相互说有10只和自己同色,第十二只需要新增10来与之配对);
所以通过上面的分析:如果 a[i]%(i+1)!=0,那么就需要(a[i]/(i+1)+1)*(i+1);否则就需要a[i]只

代码:

class Solution{
    public:
    int numRabbits(vector<int>& answers){
        if(answers.size()==0)
            return 0;
        int sum=0;
        int i=0;
        int a[1000]={0};
        for(i=0;i<answers.size();i++)
            a[answers[i]]++;
        for(i=0;i<1000;i++)
            if(a[i]%(i+1))
                sum+=((a[i]/(i+1)+1)*(i+1));
            else
                sum+=(a[i]);
        return sum;
    }
};

[Math_Medium] 781. Rabbits in Forest

标签:class   des   vector   problems   分析   rip   自己   相互   tor   

原文地址:https://www.cnblogs.com/qiulinzhang/p/9514350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!