【PTA】乙级 前世档案

前世档案 C语言

题干

在这里插入图片描述
在这里插入图片描述

大致思路

n个问题,m个玩家,所以共有2的次方种结果,对应第一个图中的树状图。
先考虑一个玩家的回答,用s统计最后结果的序号。先让结果数num除以2,如果为y,则不做处理;如果为n,则令s+=num;依次类推往下判断。最后得到的s+1就是结果序号

#include<stdio.h>
#include<math.h>
void choice(char* p,int n)
{
	char *q=p;
	char *ql=p;
	int num;
	int s;
	for(;*ql!='\0';ql+=n)
	{
		s=0;
		num=pow(2,n);
		for(;q<ql+n;q++)
		{
	 		num/=2;
			if(*q=='n')
			{
				s+=num;
			}
	 	}
	 	printf("%d\n",s+1);
	}
	
}
int main()
{
	int  n,m,i;
	scanf("%d %d",&n,&m);
	char str[n*m+1];//注意还要包括最后的'\0'
	char*p=str;
	getchar();//吸收掉上面scanf输入的回车
	for(;p<n*m+str;p+=n)
	{
		scanf("%s",p);
		getchar();
	}
	*p='\0';
	choice(str,n);
	return 0;
} 
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值