杭电HOJ1034 Candy Sharing Game 的一种解法

#include<stdio.h>
#include<time.h>
#define max 1005
int a[max];
int istop(int*s,int n)
{
 int ok=1;
 for(int i=1;i<n;i++)
 {
  if(s[0]!=s[i])ok=0;//只要有一个糖果数不等就为0
  if(!ok)break;
 }
 /*for(int i=0;i<n;i++)
      printf("%d  ",s[i]);
      printf("\n");*/
 if(ok)return 1;
 else return 0;
 
}
int main()
{
 int n;//学生人数
 int whistle;
 while(scanf("%d",&n)==1&&n)
 {
  int tem[n+10];//需要一个中间数组来保存a数组的值!
  for(int i=0;i<n;i++)
  {//输入每个学生的糖果数
   scanf("%d",a+i);
   tem[i]=a[i];
  }
  whistle=0;
  while(!istop(a,n))
  {
   whistle++;//代表口哨响了
    //开始分糖果
     //tem[0]=a[0];//改变a[0]的值之前先把它的值存起来
    tem[0]+=(a[n-1]-a[0])/2;
    for(int i=1;i<n;i++)
    {
    tem[i]+=(a[i-1]-a[i])/2;
    }
    //分完一次后检查谁的糖果是奇数个
    for(int j=0;j<n;j++)
    {
     if(tem[j]%2!=0)
     tem[j]=a[j]=tem[j]+1;//注意,要同时改变tem数组和a数组的值!!!
     else
     a[j]=tem[j];
    }
   
  }
  //退出循环说明糖果数相等了
  printf("%d %d\n",whistle,a[0]);
 /* for(int i=0;i<n;i++)
      printf("%d  ",a[i]);
      */
 }
 return 0;
}



//下面是Java版的代码

//package acm1;
import java.util.Scanner;
public class Main{
 //储存糖果的数组
 private static int[]a=new int[1005];
 private static int[]tem;//储存糖果数目的另一个数组
 private static int n;//参加游戏的同学的人数
 public static boolean istop(int[]a,int n)
 {
  int ok=1;
  for(int i=1;i<n;i++)
  {
   if(a[0]!=a[i])ok=0;
   if(ok==0)break;
  }
  if(ok==1)return true;
  else return false;
 }
 public static void main(String[]args){
 Scanner cin=new Scanner(System.in);
 int whistle=0;
 while(cin.hasNext()){
  whistle=0;//注意,每循环一次都要把whistle置零
    n=cin.nextInt();
    if(n==0)break;
  // const int N=n;
  tem=new int[n+10];
  //tem[0]+=(a[n-1]-a[0])/2;
 for(int i=0;i<n;i++)
 {tem[i]=a[i]=cin.nextInt();}
 while(!istop(a,n))//n必须定义为类的静态属性成员才能在静态方法中使用
 {
  whistle++;
  tem[0]+=(a[n-1]-a[0])/2;
  for(int i=1;i<n;i++)
  {
   tem[i]+=(a[i-1]-a[i])/2;
  }
  for(int j=0;j<n;j++)
  {
   if(tem[j]%2!=0)
    a[j]=tem[j]=tem[j]+1;
   else
    a[j]=tem[j];
  }
 }
 System.out.println(whistle+" "+a[0]);

}
 
 

}

}

猜你喜欢

转载自blog.csdn.net/lollo01/article/details/53098729