基本信息
源码名称:用于解决著名的奶牛问题
源码大小:1.44KB
文件格式:.c
开发语言:C/C++
更新时间:2013-08-13
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 1 元 
   源码介绍
该算法用于解决著名的奶牛问题


#include<stdio.h>
#define SIZE 100
void inPut(int a[],int);//数组读入数据的函数
void paiXu(int a[],int);//数组内元素的排序
void print(int a[],int b[],int,int);//打印最终结果
main()
{
 int a[SIZE]={0},b[SIZE]={0},i,n,p;//a存放输入的牛的编号,b存放床位的编号,i为一个变量,n为牛的个数,p为所需的床位

 printf("please input the number of the dairy cows(<=100):");
 scanf("%d",&n);//读入数据
 printf("please input the integers:");

 inPut(a,n);

 for(p=2;i!=n-1;p )//找出合适的p
 {
  for(i=0;i<=n-1;i )//将a除p的余数赋给b
   b[i]=a[i]%p;

  paiXu(b,n);

  for(i=0;b[i]!=b[i 1]&&i<=n-2;i );//判断床号是否重复

  if(b[n-2]==b[n-1])//如果最后两数相等修改i的值
   i=i-1;
 }

 printf("The beds we need are:%d\n",p-1);

 printf("The distribution of beds are:\n");

 print(a,b,p-1,n);//调用函数并打印出结果

 return 0;
}
void inPut(int a[],int n)//此函数功能为读入数组的值
{
 int i;

 for(i=0;i<=n-1;i )
  scanf("%d",&a[i]);
}
void paiXu(int a[],int n)//此函数功能是为数组内的元素排序
{
 int pass,hold,i;

 for(pass=1;pass<=n-1;pass ){//表示排序的次数
  for(i=0;i<=n-2;i ){
   if(a[i]>a[i 1]){
    hold=a[i];
    a[i]=a[i 1];
    a[i 1]=hold;
   }
  }
 }
}
void print(int a[],int b[],int p,int n)//此函数可以打印出结果
{
 int i,j;

 for(i=0;i<=n-1;i ){//利用穷举法实现打印效果
  for(j=0;j<=n-1;j ){
   if(b[i]==a[j]%p){
    printf("The number of %3d bed is assigned to number %3d cow.\n",b[i],a[j]);
   }
  }
 }
}