zzuli 猜糖果游戏(周练)

12 篇文章 0 订阅

关键是如何假设糖果在哪里?令糖果为具体的数值,1,2,3

猜测的位置刚好为糖果的数值就可以了;

注意位置的交换,对应的数值交换,

如第一次,a=1,b=2交换。1,2号位交换,a=2,b=1,

下次还是一二号位交换,1,2号位不同变量表示;

下面还有简化的,用数组;

#include <stdio.h>


#include <math.h>

int main()
{ int n,i,a=1,b=2,c=3,m=0,j=0,k=0,t,e,f,g,d;
 scanf("%d",&n);
 for(d=1;d<=n;d++){
    scanf("%d%d%d",&e,&f,&g);

   if((e==1||e==2)&&(f==1||f==2)){       //位置交换
    t=a,a=b,b=t;}                             //对应数值交换
     if((e==1||e==3)&&(f==1||f==3)){
    t=a,a=c,c=t;}
     if((e==3||e==2)&&(f==3||f==2)){
   t=c,c=b,b=t;}
   i=1;                         //假设糖果
    if(g==1&&a==1) m++;   
    if(g==2&&b==1) m++;
    if(g==3&&c==1) m++;
    i=2;
    if(g==1&&a==2) k++;
    if(g==2&&b==2) k++;
    if(g==3&&c==2) k++;
    i=3;
    if(g==1&&a==3) j++;
    if(g==2&&b==3) j++;
    if(g==3&&c==3) j++;

 }
    if(m<j){      //确定最大值

    t=m,m=j,j=t;
    }
    if(m<k)
        {


    t=m,m=k,k=t;
        }

 printf("%d",m);

    return 0;
}

用数组

#include<stdio.h>

#include<math.h>

#include<stdli.h>

const intN =110;

int main(){

int x,y,g, a[4], c[N],n;

for(int i =1; i<=3; i++)

a[i]=i;

scanf("%d",&n);

for(int i=1; i<=n; i++)

{ scanf("%d%d%d",&x,&y,&g);

int t=a[x];

a[x]=a[y],a[y]=t;   //杯子互换位置

c[i]=a[g]        //小b所知位置的位置g上的杯子,就是a[g]

}

int max=0;

for (int i=1; i<=3;i++)

{

int sum = 0;

for (int j = 1; j<=n;j++

{  if(c[j]==i)

sum++

}

if(sum>max) max=sum;

}

printf("%d.max);

return 0;

}

这是标答,有点不理解,参考
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值