题意:
输入一串整型数列,再输入两个数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;
}