11991 - Easy Problem from Rujia Liu?

题意:

输入一串整型数列,再输入两个数k,v,输出第k个v的序号。不存在则输出0,如第一个样例

8 4
1 3 2 2 4 3 2 1
1 3              //第1个3,序号为2,输出2
2 4              //第2个4,不存在,输出0
3 2              //第3个2,序号为7,输出7
4 2
思路:

struct num
{
    int value;
    vector<int> xuhao;//存值为value的序号
};
vector<struct num> L;
解题心得:

敲题时同时注解,方便查错,细心

代码:

#include<stdio.h>
#include<iostream>
#include<vector>
using namespace std;
struct num
{
	int value;
	vector<int> xuhao;
};
vector<struct num> L; 
int main()
{
	int n,m;
	while(~scanf("%d%d",&n,&m))
	{
		int i=1;
		int temp;
		for(i=1;i<=n;i++)
		{
			scanf("%d",&temp);
			//寻找L中是否存在value=temp的结构体
			vector<struct num>::iterator it;
			for(it=L.begin();it!=L.end();it++)
			{
				if(it->value==temp)//存在,则插入下标
				{
					it->xuhao.push_back(i);
					break;
				}
			}
			if(it==L.end())//不存在
			{
				//创建一个结构体,value=temp,下标以插入xuhao
				struct num num_1;
				num_1.value=temp;
				num_1.xuhao.push_back(i);
				L.push_back(num_1);
			}
		}
		//处理输出部分
		int a1,a2;
		for(i=1;i<=m;i++)
		{
			scanf("%d%d",&a1,&a2);
			//先判断是否存在a2
			vector<struct num>::iterator it;
			for(it=L.begin();it!=L.end();it++)
			{
				if(it->value==a2)//存在a2,继续判断是否存在,第a1个a2;
				{
					if(it->xuhao.size()<a1) printf("0\n");
					else
					{
						printf("%d\n",it->xuhao[a1-1]);
					}
					break;
				}
			}
			if(it==L.end())
			{
				printf("0\n");
			}
		}
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值