杭電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]);

}
 
 

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章