您的位置:首页 > 编程语言

华为笔试2016编程题

2017-08-23 15:41 393 查看

华为笔试2016编程题

1.删数

有一个数组a
顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。

1 #include <iostream>
2 using namespace std;
3 struct Node
4 {
5     int val;
6     Node *next;
7 };
8
9 const int N = 1000;
10 //const int null=0;
11
12 int main()
13 {
14     int n;
15     while(cin>>n)
16     {
17         if(n>1000)
18         n = 1000;
19         //初始化Node结构,生成头节点
20         Node *head = new Node;
21         head->val = 0;
22         head->next = NULL;
23         Node *p = head; //成环
24         //初始化数据
25         for(int i=1;i<n;i++)  //注意初始化节点已经为0,下一个节点从1开始
26         {
27             Node *tmp = new Node;
28             tmp->val = i;
29             tmp->next = NULL;
30             head->next = tmp;
31             head = head->next; //上一个节点是下一个节点的前节点
32             //cout <<head->data<<endl;
33         }
34         head->next = p; //最后一个地址指向头节点,成环
35
36         while(p!=p->next) //如果没有循环到初始位置
37         {
38             p->next->next = p->next->next->next;//将p的向下第二个指向位置改为指向第三个,替换第二个
39             p = p->next->next;
40         }
41         cout << p->val <<endl;   //最后即为想要的结果
42     }
43     return 0;
44 }


2.字符集合

输入一个字符串,求出该字符串包含的字符集合

输入描述:

每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。

输出描述:

每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。

1 #include<iostream>
2 #include<string>
3 #include<vector>
4 #include<algorithm>
5 using namespace std;
6 int main()
7 {
8     string s1;
9     while(cin>>s1)
10     {
11        int n=s1.size();
12        vector<char> vec;
13        for(int i=0;i<n;i++)
14        {
15             vector<char>::iterator it = find(vec.begin(),vec.end(),s1[i]);
16             if(it==vec.end())
17                 vec.push_back(s1[i]);
18         }
19         for(int i =0;i<vec.size();i++)
20             cout<<vec[i];
21         cout<<endl;
22     }
23     return 0;
24 }


3.数独

数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。

输入描述:

输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。

输出描述:

输出九行,每行九个空格隔开的数字,为解出的答案。

分析:没搞出来,看评论说是测试用例的问题,存在多解

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