PAT_B_1069_微博轉發抽獎

題目描述:spa

小明 PAT 考了滿分,高興之餘決定發起微博轉發抽獎活動,從轉發的網友中按順序每隔 N 我的就發出一個紅包。請你編寫程序幫助他肯定中獎名單。

輸入格式:
輸入第一行給出三個正整數 M(≤ 1000)、N 和 S,分別是轉發的總量、小明決定的中獎間隔、以及第一位中獎者的序號(編號從 1 開始)。隨後 M 行,順序給出轉發微博的網友的暱稱(不超過 20 個字符、不包含空格回車的非空字符串)。

注意:可能有人轉發屢次,但不能中獎屢次。因此若是處於當前中獎位置的網友已經中過獎,則跳過他順次取下一位。

輸出格式:
按照輸入的順序輸出中獎名單,每一個暱稱佔一行。若是沒有人中獎,則輸出 Keep going...。

輸入樣例 1:
9 3 2
Imgonnawin!
PickMe
PickMeMeMeee
LookHere
Imgonnawin!
TryAgainAgain
TryAgainAgain
Imgonnawin!
TryAgainAgain
輸出樣例 1:
PickMe
Imgonnawin!
TryAgainAgain
輸入樣例 2:
2 3 5
Imgonnawin!
PickMe
輸出樣例 2:
Keep going...

題目關鍵:blog

注意已中獎帳號的存儲與比較
若是目標帳號已經中獎,則向下順延

本人AC代碼:字符串

# include <stdio.h>
# include <string.h>
# define Max 1000
int main()
{
    int n,m,s,i,j,num = 0, flag=0;
    char str[Max][21],win[Max][21];
    scanf("%d %d %d",&m,&n,&s);
    s--;
    getchar();
    for(i = 0;i < m;i++)
  		gets(str[i]);
	
    if(s >= m)
    {
    	printf("Keep going...");
    	return 0;
	}
	
	for (i=s; i<m; )
	{
		flag = 0;
		// 判斷是否中過獎 
		for (j=0; j<num; j++)
		{
			if (0 == strcmp(str[i], win[j]))
			{
				flag = 1;
				break;
			}
		}
		// 如沒有 
		if (flag == 0)
		{
			puts(str[i]);
        	strcpy(win[num++],str[i]);
        	i+=n;
		}
		else // 不然
		{
			i++;
		} 
	}

    return 0;

}

RRRget

相關文章
相關標籤/搜索