zoukankan      html  css  js  c++  java
  • 嘉宾与幸运中奖者

    今天有同学做菊花厂的校招机试题遇到这个问题。

    题目要求

    • 输入一个包含6个人名的字符串,人名之间以空格隔开,人名不超过10个字符,第一个名字为嘉宾名字,后面5人为抽奖者名字;
    • 定义名字中a或者A的幸运值为1,z或者Z为26;
    • 后面5人中谁和嘉宾的幸运值相差最小,谁就获奖,当出现幸运值相差最小的人数为复数时,选取其在名单中排名最靠后的。

    ①示例输入
    ccc aaa bbb fff AAZZ xyx
    输出
    bbb

    ②示例输入
    ccc aaa bcb fff AAZZ cbb
    输出
    cbb

    程序

    #include <iostream>
    #include <sstream>
    using namespace std;
    
    int sum = 0;
    
    int goal(string name)
    {
    	int length = name.length();
    	int b[10];//人名不大于10个字符
    	for (int i = 0; i < length; i++)
    	{
    		if (name[i] >= 'a'&&name[i] <= 'z')//如果为小写字母
    			b[i] = name[i] - 'a'+1;
    		else //如果为大写字母
    			b[i] = name[i] - 'A'+1;
    	}
    	//计算该人名的幸运值
    	for (int i = 0; i < length; i++)
    	{
    		sum +=b[i];
    	}
    	return sum;
    }
    
    int main(int argc, char** argv) {
    	while (1)
    	{
    		/*获取字符串*/
    		string name_array;
    		getline(cin, name_array);
    
    		/*按空格分割人名*/
    		istringstream str(name_array);
    		string out;
    		string name[6];
    		int i = 0;
    		while (str >> out) //遇到空格就结束条件判断,执行函数体语句;直到串流全部输出给string对象,值为0
    		{
    			name[i] = out;
    			i++;
    		}
    
    		/*计算幸运值*/
    		int b[6] = { 0 };
    		for (int i = 0; i < 6; i++)
    		{
    			b[i] = goal(name[i]);
    			sum = 0;
    		}
    		/*计算5名抽奖者和嘉宾的幸运值差值*/
    		int c[5] = { 0 };
    		for (int i = 0; i < 5; i++)
    		{
    			c[i] = b[i + 1] - b[0];
    		}
    		/*计算差值的绝对值*/
    		int d[5] = { 0 };
    		for (int i = 0; i < 5; i++)
    		{
    			if (c[i] < 0)
    				d[i] = -c[i];
    			else
    				d[i] = c[i];
    		}
    		/*寻找差值绝对值中最小一个数字对应的下标,当有多个相同最小值时,取最后一个的下标*/
    		int n, min;
    		min = d[0];
    		for (int i = 1; i < 5; i++)
    		{
    			if (d[i] <= min)
    				n = i; //记录最小值的下标
    
    			min = d[n];//更新最小值
    		}
    		/*输出中奖者*/
    		cout << name[n + 1] << endl;
    	}
    
    }
    
  • 相关阅读:
    iText + Freemarker实现pdf的导出,支持中文、css以及图片,页眉页脚,页眉添加图片
    SpringBoot使用拦截器、过滤器、监听器
    Java中boolean类型占用多少个字节?我说一个,面试官让我回家等通知
    【搞定面试官】try中有return,finally还会执行吗?
    细说JVM内存模型
    easyExcel简介#
    gbdt和xgboost api
    RNN BPTT
    tensorflow LSTM
    [转]python与numpy基础
  • 原文地址:https://www.cnblogs.com/j-c-y/p/13443087.html
Copyright © 2011-2022 走看看