• 华为笔试2016编程题


    华为笔试2016编程题

    1.删数

    有一个数组a[N]顺序存放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的地方就是需要填充的。

    输出描述:

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

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

  • 相关阅读:
    windows server 2012 流媒体服务器搭建(直播与点播)
    开源的电商 B2C、B2B2C 电商系统-关于shopnc版权问题处处是陷阱啊
    windows远程桌面无法粘贴复制的问题解决方法
    通过$.ajax设置预加载动画加强用户体验
    怎么样抢注新域名
    某些浏览器具有dns缓存功能,大家更改域名指向,建议清理下浏览器缓存
    jQuery的on绑定事件在mobile safari(iphone / ipad / ipod)上无法使用的解决方案
    sqlserver Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应
    解决jQuery ajax动态新增节点无法触发点击事件的问题
    php递归函数中使用return的注意事项
  • 原文地址:https://www.cnblogs.com/lxt1105/p/7418514.html
Copyright © 2020-2023  润新知