zoukankan      html  css  js  c++  java
  • HDU2171_输入处理_点名字

    题目大意: 给你一组人名,然后指定从哪个人名开始计数,注意人名是围城一个圈的。然后要求打印出点到名字的人的名字。 解题思路: 用map存放人名,(用两个map逆着存,这样方便取,方便转换)。之后靠模数的方式来取数。模的时候处理了半个小时。困了,脑筋转不动了。 代码:
    #include
    #include
    #include
    using namespace std;
    const int MAX = 1005;
    int main(void)
    {
    	int cas;
    	scanf("%d", &cas);
    	while(cas--)
    	{
    		getchar();
    		char str[MAX];
    		gets(str);
    
    		int len = strlen(str);
    		string nameStr = "";
    		int nameNum = 0;
    		map name1;
    		map nameF;
    
    		for(int i = 0; i <= len; i++)
    		{
    			if(str[i] != ' ' && str[i] != '\0')
    				nameStr += str[i];
    			else
    			{
    				name1[nameStr] = ++nameNum;
    				nameF[nameNum] = nameStr;
    				nameStr = "";
    			}
    		}
    
    		gets(str);
    		int n;
    		scanf("%d", &n);
    		int temp = n % nameNum;
    		int ans;
    		for(int i = 1; i < nameNum; i++)
    		{
    			nameF[i+nameNum] = nameF[i];
    		}
    		if(temp == 0)
    		{
    			if(name1[str] == 1)
    				ans = nameNum;
    			else
    				ans = name1[str] - 1;
    		}
    		else
    		{
    			ans = name1[str] + temp - 1;
    		}
    		cout<
  • 相关阅读:
    获取指定字符传的长度或者高度
    检测身份证号码是否合法
    tabbar添加小红点
    单例的简单构造
    iOS程序内发短信
    多项式加法运算 使用链表实现
    链表的数组实现
    使用链表实现堆栈
    使用链表实现堆栈
    求最大子列和的几种方法
  • 原文地址:https://www.cnblogs.com/cchun/p/2520213.html
Copyright © 2011-2022 走看看