以vector为容器 每次放入新元素时在容器中进行循环寻找是否有相同元素 如果有返回相应编号 没有则放入容器 创建新编号 时间复杂度较大 每次查询复杂度O(n^2)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
vector<string> names;
int n;
int ID(string s){
for(int i=0;i<names.size();i++){
if(names[i]==s)
return i;
}
names.push_back(s);
return names.size()-1;
}
int main(){
char s[20][20];
names.clear();
cin>>n;
for(int i=0;i<n;i++)
cin>>s[i];
for(int i=0;i<n;i++)
cout<<s[i]<<" "<<ID(s[i])<<endl;
system("pause");
return 0;
}
用map函数 建立哈希映射 每次查询只需O(1)时间
#include<cstdio>
#include<iostream>
#include<cstring>
#include<map>
using namespace std;
int n,count=1;//从1开始
map<string,int> cnt;
int ID(string s){
if(cnt[s]