CCF 201412-1 门禁系统 C语言解法

问题描述
试题编号: 201412-1
试题名称: 门禁系统
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述   涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。 每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记
录,请问每一条记录中的读者是第几次出现。 输入格式   输入的第一行包含一个整数 n,表示涛涛的记录条数。   第二行包含 n 个整数,依次表示涛涛的记录中每位读者的编号。 输出格式   输出一行,包含 n 个整数,由空格分隔,依次表示每条记录中的读者 编号是第几次出现。

样例输入 5 1 2 1 1 3

样例输出 1 1 2 3 1

评测用例规模与约定   1≤n≤1,000,读者的编号为不超过 n 的正整数。
 

c语言代码如下:

#include<stdio.h>
int main()
{
	int n,a[1000],i,j,k,b[1000],flag=0,c[1000]; //a[1000]存放的是输入的数值;b[1000]存放的是有哪几个数值,如样例中是1,2,3;c[1000]存放的是每个“1,2,3”所对应的个数 
	scanf("%d",&n);
	for(i=0;i<n;i++)
	scanf("%d",&a[i]);
	b[0]=a[0];
	for(i=1,j=1;i<n;j++,i++) 
	{
		flag=0;
		for(k=i+1;k<n;k++)
		{
			if(a[i]==a[k]||a[i]==a[0])
			{
				j--;
				flag=1;
				break;
			}
		}
		if(flag==0)
		b[j]=a[i];
	}
	for(i=0;i<j;i++)
	{
		c[i]=0;
	}
	for(i=0;i<n;i++)
	{
		for(k=0;k<j;k++)
		{
			if(a[i]==b[k])
			{
			c[k]++;
			flag=k;
			break;
			}
		}
		printf("%d ",c[flag]);
	}
}


如果有看不懂的地方。。。可以评论,如果真的有人看的话。哈哈哈


猜你喜欢

转载自blog.csdn.net/eudoraa/article/details/78666341