求有限表中元素的最大值

设有一个表L=(a1,a2,a3,……,an),其中L为表名,a1,a2,a3,……,an为表中元素,但ai为数值时,表示一个元素值;当ai为大写字母时,表示另一个表,但不能循环定义。

输入:

L 3,4,8,S,9,0,8,T

S 10,3,4,U,9,6

T 4,5,6

U 7,9,8,6

输出:

10

 

分析:水题。老师出题的本意是为了引入队列(queue),但我觉得在这里用就多余了。他的本意是先读入一行,遇到大写字母就读入多一行,检索完后再回到原先那个表。但我发觉其实不用这样的,只要遇到大写字母时,记录要多读入一次数据就行了,这里只需要求最大值,只要读完所有数据就行了。

 

#include<iostream>
using namespace std;
int j,max;//max保存最大值,j保存当前输入的表个数 
void f(char s[])
{
	int i,temp;
	j--;
	for(i=2;s[i]!='\0';i++)
	{
		if(s[i]>='0'&&s[i]<='9')//构造数字 
		{
			temp=0;
			while(s[i]>='0'&&s[i]<='9')
			{
				temp=temp*10+s[i]-'0';
				i++;
			}
			if(max<temp)
				max=temp;
		}
		else
		{
			if(s[i]>='A'&&s[i]<='Z')//遇到字母即多一个表要输入多一次 
				j++;
		}
	}
}
int main()
{
	char s[1000];
	int i;
	while(cin.getline(s,1000))
	{
		max=s[2]-'0';
		j=1;
		for(i=0;i<j;i++)
		{
			f(s);
			if(i!=j-1)
				cin.getline(s,1000);
		}
		cout<<max<<endl;
	}
	return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值