您的位置:首页 > 其它

华为给出的测试账号里面的题

2014-08-02 08:46 176 查看

记票统计
描述:模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、”C”、”D”表示,选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票。选举结束后获取各个候选人的得票数以及无效票的个数,输出结果以添加候选人的顺序进行顺序输出,最后一行为无效的数量。同时getVoteResult命令为结束命令。

运行时间限制:无限制
内存限制:无限制
输入:输入为多行形式输入,每一行为一条命令。输入的命令只会是有效命令不会有非法命令,但可能存在非法的投票,上面已经描述了。

添加候选人的命令如下:addCandidate为命令 xx1为候选人

addCandidate xx1

投票的命令如下:vote为命令 xx1为候选人的字符串

vote xx1

统计投票的命令如下:getVoteResult为命令

getVoteResult

输出:输出结果以添加候选人的顺序进行顺序输出,最后一行为无效的数量。

样例输入:addCandidate xx1addCandidate xx2addCandidate xx3addCandidate xx4addCandidate xx5addCandidate xx6vote xx1vote xx3vote xx4vote xx1vote xx2vote xx7vote xx4vote xx5vote xx3vote xx2vote xx1vote
xx7getVoteResult
样例输出:xx1 3xx2 2xx3 2xx4 2xx5 1xx6 02

#include<iostream>

#include<algorithm>

#include<map>

#include<string>



usingnamespace
std;

typedef pair<string,int>MyPair;

typedefmap<string,int>MyMap;

map<string,int>::iterator
iter;

int main()

{

int count=
0;

const string add=
"addCandidate";

const string vote=
"vote";

const string get=
"getVoteResult";

string cmdf;

MyMap mymap;

while(cmdf
!= get)

{

string cmdn;

string str;

cout<<
"请输入命令"<< endl;

cin>> cmdf;

if(cmdf
!= get)

cin>> cmdn;

if(cmdf
== add)

{

str.clear();

for(int
i=
0; i< cmdn.size();
i++)

{

str.push_back(cmdn[i]);

}

mymap.insert(make_pair(str,0));

}

elseif
(cmdf== vote)

{

str.clear();

for(int
i=
0; i< cmdn.size();
i++)

str.push_back(cmdn[i]);

iter= mymap.find(str);

if(iter
!= mymap.end())

iter->second++;

else

count++;

}

}

iter= mymap.begin();

while(iter
!= mymap.end())

{

cout << (*iter).first << " " << (*iter).second << endl;

iter++;

}

cout<<
"输错次数:"<< count
<< endl;

return0;

}


笨笨熊搬家交通篇
描述:森林里的苯苯熊要乔迁新喜,上次他已经将物品打包完成,并约了朋友来帮忙。接下来他要选定一个搬家的时间,想了很久,就决定在国庆节进行,因为国庆放假朋友们都有时间啦。但是在森林里,从他现在房子到新豪宅,所经之地有山有水,路途曲折,甚至有些道路是不通的。

请你和他一起查看指定的地图,看看从笨笨熊现在的房子到新宅之间,道路是否是畅通的呢?

地图是R行、C列的矩阵,矩阵的每一个格子刚好是一天的行程。

矩阵由“B”、“-”、“#”、“H”四种字符成员组成,其中:

B: 代表苯苯熊现在的房子;

H: 代表笨笨熊新的豪宅;

-: 代表可以通行的道路;

#: 代表无法通过的障碍(高山、大河等);

此外,森林里也有交通规则地:在任务位置,只能向“上、下、左、右”四个方向中的其中一个方向行走。

运行时间限制:无限制
内存限制:无限制
输入:4 // R的数值

4 // C的数值,下面是地图。

--##---

B-----H

#---#--

-------

输出:Y //代表道路可达



N //代表道路不通

样例输入:15-B-H#
样例输出:Y
答案提示:
这个题目开始想用回溯法做,用的时间较多,后来发现这种暴力破解法貌似更好,题目没有时间,内存的限制~

#include<iostream>

usingnamespace
std;



void old_Home(char**m,int
x,int y,int&
a,int& b)//获取B的坐标

{

for(int
i=
0; i< x; i++)

{

for(int
j=
0; j< y; j++)

{

if(m[i][j]==
'B')

{

a= i;

b= j;

   }

}

}

}


bool find_Home(char**m,int
x,int y,int
a,int b)

{

if((a
>= 0)&&
(a< x)&&
(b>=
0)&&
(b< y))

{

if(m[a][b]==
'H')

returntrue;

if(m[a][b]==
'#')

returnfalse;

if((m[a][b]==
'-')||
(m[a][b]==
'B'))

{

m[a][b]=
'#';

return(find_Home(m,
x, y, a
+ 1, b)||

find_Home(m,
x, y, a-
1, b)||

find_Home(m,
x, y, a, b+
1)||

find_Home(m,
x, y, a, b-
1));

}

}

else

returnfalse;

}


voidInit(char*
p,int x,int
y)//输入矩阵

{

for(int
i=
0; i< x
; i++)

{

cin>> p;

p+= y;

}

}


int _tmain(int
argc, _TCHAR* argv[])

{

int x,
y,a
= 0,b=
0;

cin>> x;

cin>> y;

char** m=
newchar*[x];

char* p=
newchar[x*y+1];

for(int
i=
0; i< x; i++)

m[i]=
p + i*y;

Init(p,
x, y);

old_Home(m,
x, y, a, b);

if(find_Home(m,
x, y, a, b))

cout<<
"Y"<< endl;

else

cout<<
"N"<< endl;

delete[] p;

return0;

}


3.
好友关系管理
描述:现有一个社交网站,其好友推荐策略为:用户A和用户B不是好友,当二人的共同好友数量超过好友推荐阈值m时,就向A和B分别推荐为彼此好友。

本题任务为:对设定的m值,给定一组用户及各自好友列表,对这一组用户,反复自动应用上述好友推荐策略后(假设每次推荐都被采纳),求指定用户的最终好友列表。

注:好友关系是双向的,即:如果用户A是用户B的好友,那么用户B一定也是用户A的好友。

写一个程序,在社交网络中实现:

1)初始化社交网络

2)创建用户

3)增加指定两个用户之间的好友关系

4)反复自动应用好友推荐策略后,获取某个用户的好友数量

5)反复自动应用好友推荐策略后,判断某两个用户间是否存在好友关系

说明:

1、一个用户有且只有一个名字,且不存在重名

2、自己和自己不存在好友关系

3、用户名字大小写敏感

4、用户名字字符串长度范围为[1..20]

5、用户总数小于100个

运行时间限制:无限制
内存限制:无限制
输入:五个整数,好友推荐阈值P,创建用户数量m,增加指定两个用户之间的好友关系数量M,查询某个用户的好友数量n,查询指定两个用户是否是好友N字符串,每个数据一行,按到上面的顺序依次输入数据,共m+M+n+N行字符串

字符串,每个一行,共m+M+n+N行字符串

输出:输出用户的好友数量,共n个,每个一行;如果用户不存在,输出-1,否则输出好友数量。样例中的用户Jack、Peter、Tom的好友数量都是2个。

输出指定两个用户是否是好友,共N个,每个一行,如果是输出0,否则输出-1。样例中的用户Jack与Peter、Peter与Tom、Jack与Tom都是好友关系,所有输出0。

样例输入:2 3 3 3 3JackPeterTomJack PeterPeter TomJack TomJackPeterTomJack PeterPeter TomJack Tom
样例输出:222000
匿名评论(隐身草)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: