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<
  • 相关阅读:
    獲取XML文檔節點的值
    Asp.net之数组应用
    读写XML文档
    C#区分中英文统计字符串的长度
    vs2005常用快捷键
    基础知识
    中国的十二生肖原来还代表着对人品格的要求
    学习OO思想
    改变系统时间c#
    用C#创建各种类型的wave文件
  • 原文地址:https://www.cnblogs.com/cchun/p/2520213.html
Copyright © 2011-2022 走看看