• 华为机试再回忆--第一题


    之前写的第一题有误,上个厕所过来赶紧给删了,怕误导大家。题目如下:

    题目:输出整数序列中重复的数字

    描述:编写一个程序,用户输入任意长度(小于等于10)的整数序列,整数值都大于0,程序输出序列中所有重复的数组并且数组

    的顺序和输入保持一致

    输入:数字序列,一行数字,长度小于1000;两个数字之间用逗号隔开,所有数字均为整数且大于0.

    输出:重复的数字,两个数字之间以空格分隔,数字的顺序和输入一致

    样例输入:3,2,2,3,4,5,6

    样例输出:3,2

    解题步骤:

    1.申请一个InputArray和HelpArray,大小均为1000,初始化为0

    2.将输入字符串存入InputArray并计算实际大小

    3.双重循环遍历输入数组,如果有相同的元素则再判断HelpArray数组里面是否存在这个元素

    4.若HelpArray没有则存入,否则继续遍历

    5.最后顺序HelpArray中的非零元素,即可

      1 #include <iostream>
      2 #include <string>
      3 using namespace std;
      4 
      5 #define MaxSize 1000
      6 
      7 int main()
      8 {
      9     int *InputArray=new int[MaxSize];
     10     int *HelpArray=new int[MaxSize];
     11     for(int i=0;i<MaxSize;i++)
     12     {
     13         InputArray[i]=0;
     14         HelpArray[i]=0;
     15     }
     16     
     17     
     18     string s;
     19     cin>>s;
     20 
     21 
     22     int count=0;
     23     int sum=0;
     24     i=0;
     25     int temp;
     26     while(true)
     27     {
     28         if(s[i+1]!=','&&(i+1)!=s.length())
     29         {
     30             sum=sum*10+(s[i]-'0')*10;
     31         }
     32         else
     33         {
     34             sum=sum+(s[i]-'0');
     35             temp=sum;
     36             InputArray[count++]=sum;
     37             if(i==s.length()-1)
     38             {
     39                 break;
     40             }
     41             
     42             sum=0;
     43             i=i+2;
     44             continue;
     45         }
     46         i++;
     47         
     48     }
     49 
     50 
     51   int RealLen=count;
     52 
     53   for(i=0;i<count;i++)
     54   {
     55       if(InputArray[i]<=0)
     56       {
     57         return 0;
     58       }
     59   }
     60       
     61 
     62    int countnew=0;
     63     for(i=0;i<RealLen;i++)
     64     {
     65         for(int j=0;j<RealLen;j++)
     66         {
     67             if(i!=j)
     68             {
     69                 bool flag=true;
     70                 if(InputArray[i]==InputArray[j])
     71                 {
     72                     for(int k=0;k<MaxSize;k++)
     73                     {
     74                         if(InputArray[i]==HelpArray[k])
     75                         {
     76                             flag=false;
     77                         }
     78                     }
     79                     
     80                     
     81                     if(flag)
     82                     {
     83                         HelpArray[countnew++]=InputArray[i];
     84                     }
     85                 }
     86             }
     87         }
     88     }
     89     
     90     for(i=0;i<MaxSize;i++)
     91     {
     92         if(HelpArray[i]==0)
     93         {
     94             break;
     95         }
     96         else
     97         {
     98             cout<<HelpArray[i]<<" ";
     99         }
    100     }
    101     
    102     cout<<endl;
    103     delete[] InputArray;
    104     InputArray=NULL;
    105     
    106     delete[] HelpArray;
    107     HelpArray=NULL;
    108     return 0;
    109 }

    运行截图:

  • 相关阅读:
    c++父类指针子类指针转化分析
    setbuf手册
    c++细节
    cf727e
    总结
    UVa 10192 Vacation (最长公共子序列)
    HUNNU 11313 最长公共子序列(LCS)
    HDU 2069 Coin Change (经典DP)
    UVa 674 Coin Change (经典DP)
    UVa 10131 Is Bigger Smarter? (LDS+数据结构排序)
  • 原文地址:https://www.cnblogs.com/vpoet/p/4754942.html
Copyright © 2020-2023  润新知