有没有谁有更好的方法来做<<奶牛卧室>>的方法 用C语言做 除了用指针之外的方法

奶牛们有一个习惯,那就是根据自己的编号选择床号。如果一头奶牛编号是a,并且有0..k-1一共k张床,那么她就会选择a  mod  k号床作为她睡觉的地点。显然,2头牛不能睡在一张床上。那么给出一些奶牛的编号,请你为她们准备一间卧室,使得里面的床的个数最少。

【输入文件】

第一行是奶牛的个数n(1<=n<=5000);第2到第n+1行是每头奶牛的编号

Si(1<=Si<=100 0000)。

【输出文件】

仅一行,是最少的床的数目。

【输入样例】

5

4

6

9

10

13

【输出样例】

8

我的代码如下:可惜超时了

# include<iostream>

using namespace std;

int main()

{

int i,n,a,t,b,j,g,x[1000],y[1000];

cin>>n; for(i=0;i<n;i++)  

cin>>x[i]; for(j=n;j;j++)

{  

g=0;  

for(i=0;i<n;i++)  

{   

y[i]=x[i]%j;  

}  

for(a=1;a<n;a++)  

for(b=0;b<n-1;b++)   

if(y[b]>y[b+1])   

{                 

t=y[b];     

y[b]=y[b+1];     

y[b+1]=t;   

}   

for(b=0;b<n;b++)    

if(y[b+1]!=y[b])     

g++;   

if(g==n)     break;

}

cout<<j<<endl;

return 0;

}

posted @ 2013-11-25 20:00  hanqiu  阅读(556)  评论(0)    收藏  举报