• 华为huawei oj





    首先计算每个数在最大递增子串中的位置

    
    

    186  186  150  200  160  130  197  200   quene

    
    

    1      1      1      2       2      1      3     4       递增计数

    
    


    
    

    然后计算每个数在反向最大递减子串中的位置--->计算反向后每个数在最大递增子串中的位置

    
    

    200  197  130  160  200  150  186  186   反向quene

    
    

    1      1      1       2     3      2      3       3      递减计数

    
    


    
    

    然后将每个数的递增计数和递减计数相加

    
    

    186  186  150  200  160  130  197  200   quene

    
    

    1      1      1      2       2     1      3      4       递增计数

    
    

    3      3      2      3       2     1      1      1       递减计数

    
    

    4      4      3      5       4     2      4      5       每个数在所在队列的人数+1(自己在递增和递减中被重复计算)

    
    


    
    

    如160这个数

    
    

    在递增队列中有2个人数

    
    

    150  160

    
    

    在递减队列中有2个人数

    
    

    160  130

    
    

    那么160所在队列中就有3个人

    
    

    150  160  130

    
    


    
    

    每个数的所在队列人数表达就是这个意思

    
    


    
    

    总人数 - 该数所在队列人数 = 需要出队的人数



    1
    链接:https://www.nowcoder.com/questionTerminal/6d9d69e3898f45169a441632b325c7b4 2 来源:牛客网 3 4 #include <iostream> 5 #include <string> 6 #include <vector> 7 #include <algorithm> 8 #include <iomanip> 9 #include <math.h> 10 using namespace std; 11   12 int main() 13 { 14     int n; 15     while (cin >> n) 16     { 17         vector<int> vec(n), dp(n), dq(n); 18         int i, k, j, ma = 0; 19         for (i = 0; i < n; ++i) 20         { 21             cin >> vec[i]; 22             dp[i] = 1; 23             dq[i] = 1; 24         } 25         for (i = 1; i < n; ++i) 26         { 27             for (j = 0; j < i; ++j) 28             { 29                 if (vec[i] > vec[j]) 30                     dp[i] = max(dp[i], dp[j] + 1); 31             } 32         } 33         for (i = n - 2; i >= 0; --i) 34         { 35             for (j = n - 1; j > i; --j) 36             { 37                 if (vec[i] > vec[j]) 38                     dq[i] = max(dq[i], dq[j] + 1); 39             } 40         } 41         for (i = 0; i < n; ++i) 42             ma = max(ma, dp[i] + dq[i] - 1); 43         cout << n - ma << endl; 44     } 45     return 0; 46 }

    001题目描述

    计算字符串最后一个单词的长度,单词以空格隔开。 

    输入描述:

    一行字符串,非空,长度小于5000。

    输出描述:

    整数N,最后一个单词的长度。

    示例1

    输入

    hello world

    输出

    5

    思路::遍历一遍找到空格个数,在遍历一遍定位最后一个空格 然后总长度减去定位 就是最后一个字母的长度
     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     char a[5000];                  //定义一个char数组
     8      gets(a);                        //把字符串读入字符串数组 
     9     int m=0,n=0,sum=0;
    10     for (int i = 0; a[i]!=''; i++)    //遍历结束的标志是 a[i]!='';
    11     {
    12         sum++;
    13         if (a[i] == ' ')
    14             n++;
    15     }
    16     if (n == 0)
    17     {
    18         cout << sum ;
    19     }
    20     else
    21     {
    22         m = n;
    23         for (int i = 0; a[i] != ''; i++)
    24         {
    25             if (a[i] == ' ')
    26                 m--;
    27             if (m == 0)
    28             {
    29                 cout << sum - i - 1;
    30                 break;                               //break 跳出for  continue跳出这次 继续下一轮的循环 return 结束了
    31             }
    32         }
    33     }
    34     
    35     return 0;
    36 }
    #include<iostream>
    #include<string>
    #include<vector>
     
    using namespace std;
     
    int main(){
        string input;
        vector<string>arr;
        while(cin>>input){
            arr.push_back(input);
        }
        cout<<arr[arr.size()-1].length()<<endl;     
        return 0;
    }
    尼玛 太简单了 !!!!!!!!

    002题目描述

    写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。

    输入描述:

    输入一个有字母和数字以及空格组成的字符串,和一个字符。

    输出描述:

    输出输入字符串中含有该字符的个数。

    示例1

    输入

    ABCDEF
    A

    输出

    1

     1 #include<iostream>
     2 
     3 #include<algorithm>
     4 #include<string>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     string str;                    //字符串的输入 方法2 
    10     char ch;                       //
    11     getline(cin, str);             //getline(cin,str);  
    12     cin >> ch;
    13         if (ch>='a'&&ch<='z')      // count (str.begin(),str.end(),ch)            ch-32 变大写
    14         {
    15             cout << count(str.begin(), str.end(), ch) + count(str.begin(), str.end(), ch - 32);
    16         }
    17         else if (ch >= 'A'&&ch <= 'Z')
    18         {
    19             cout << count(str.begin(), str.end(), ch) + count(str.begin(), str.end(), ch + 32);
    20         }
    21         else  //如果是个数值的话
    22         {
    23             cout << count(str.begin(), str.end(), ch);
    24         }
    25     return 0;
    26 }

    003 明明的随机数   认真输入 

    题目描述

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

    Input Param 

         n               输入随机数的个数     

     inputArray      n个随机整数组成的数组 

    Return Value

         OutputArray    输出处理后的随机整数

    注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。

    输入描述:

    输入多行,先输入随机整数的个数,再输入相应个数的整数

    输出描述:

    返回多行,处理后的结果

    示例1

    输入

    11
    10
    20
    40
    32
    67
    40
    20
    89
    300
    400
    15
    

    输出

    10
    15
    20
    32
    40
    67
    89
    300
    400
     1 #include<iostream>
     2 #include<set>
     3 using namespace std;
     4 
     5 int main()
     6 
     7 {
     8     int n,x;
     9     set<int> a;
    10     while (cin>>n)
    11     {
    12         for (int i = 0; i < n; i++)
    13         {
    14             cin >> x;
    15             a.insert(x);
    16         }
    17         set<int>::iterator it = a.begin();
    18         for (; it!=a.end(); it++)
    19         {
    20             cout << *it << endl;
    21         }
    22         a.clear();
    23     }
    24 
    25     return 0;
    26 }
     1 #include <iostream>
     2 using namespace std;
     3 int main() {
     4     int N, n;
     5     while (cin >> N) {
     6         int a[1001] = { 0 };
     7         while (N--) {
     8             cin >> n;
     9             a[n] = 1;
    10         }
    11         for (int i = 0; i < 1001; i++)
    12             if (a[i])
    13                 cout << i << endl;
    14     }
    15     return 0;
    16 }//阿西吧 空间换时间 

    004题目描述

    •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; 
    •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 

    输入描述:

    连续输入字符串(输入2次,每个字符串长度小于100)

    输出描述:

    输出到长度为8的新字符串数组

    示例1

    输入

    abc
    123456789

    输出

    abc00000
    12345678
    90000000

    substr(字符串,截取开始位置,截取长度) //返回截取的字

    substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串

    substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符

    substr('Hello World',2,4) //返回结果为 'ello'

    substr('Hello World',-3,3)//返回结果为 'rld' *负数(-i)表示截取的开始位置为字符串右端向左数第i个字符

    例如:

        string s("What we have here is a failure to communicate");
    
        string sub = s.substr(21);//去除前21个字符剩下的返回给sub  对s没有任何影响  
    
        cout << "The original string is " << s << endl;
        cout << "The substring is " << sub << endl;
    

    显示:

        The original string is What we have here is a failure to communicate
        The substring is a failure to communicate
    
    
    
     1 #include<iostream>
     2 #include<string>
     3 //#include<algorithm>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     int n = 2;
     9     string str;
    10     while (n--)
    11     {
    12         getline(cin, str);
    13         if (str.length()==0)
    14         {
    15             return 0;
    16         }
    17         while (str.size() > 8)
    18         {
    19             cout << str.substr(0, 8) << endl;
    20             str = str.substr(8);
    21         }
    22         if (str.size() <= 8)
    23         {
    24             cout << str.append(8 - str.size(), '0') << endl;
    25         }
    26     }
    27     return 0;
    28 }
    
    

    005 质数因子 题目描述

    功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )

    最后一个数后面也要有空格
     

    详细描述:


    函数接口说明:

    public String getResult(long ulDataInput)

    输入参数:

    long ulDataInput:输入的正整数

    返回值:

    String

    输入描述:

    输入一个long型整数

    输出描述:

    按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。

    示例1

    输入

    180
    

    输出

    2 2 3 3 5



     1 #include <iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     int long m;
     7     while (cin >> m)
     8     {
     9             if (m <= 1)
    10             return 0;
    11         while (m != 1)
    12         {
    13             for (size_t i = 2; i <= m; i++)
    14             {
    15                 if (m %i == 0)
    16                 {
    17                     cout << i << " ";
    18                     m = m / i;
    19                     break;
    20                 }
    21             }
    22         }
    23     }
    24 
    25     return 0;
    26 }

       006 map  键值对  题目描述

    数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

    输入描述:

    先输入键值对的个数
    然后输入成对的index和value值,以空格隔开

    输出描述:

    输出合并后的键值对(多行)

    示例1

    输入

    4
    0 1
    0 2
    1 2
    3 4
    

    输出

    0 3
    1 2
    3 4


     1 #include <iostream>
     2 #include <map>
     3 #include <utility>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     int n,x,y;
     9     map<int, int> a;
    10     cin >> n;
    11     while (n--)
    12     {
    13         int key, value;
    14         cin >> key >> value;
    15         if (!a[key])
    16         {
    17             a[key] = value;
    18         }
    19         else
    20         {
    21             a[key] += value;
    22         }
    23 
    24     }
    25     map<int, int>::iterator it = a.begin();
    26     for (;it!=a.end(); it++)
    27     {
    28         cout << it->first << " " << it->second<<endl;
    29     }
    30     a.clear();
    31     return 0;
    32 }

    题目描述

    输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

    输入描述:

    输入一个int型整数

    输出描述:

    按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

    示例1

    输入

    9876673
    

    输出

    37689

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int n,sum=0;
     8     int sz[10] = { 0 };
     9     while (cin >> n)
    10     {
    11         while (n)
    12         {
    13             if (sz[(n % 10)] == 0)
    14             {
    15                 sz[n % 10]=1;
    16                 sum = sum * 10 + n % 10;
    17 
    18             }
    19             n = n / 10;
    20         }
    21         cout << sum << endl;
    22     }
    23     
    24     return 0;
    25 }

     

    HW 统计字符个数 题目描述

    编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。

    输入描述:

    输入N个字符,字符在ACSII码范围内。

    输出描述:

    输出范围在(0~127)字符的个数。

    示例1

    输入

    abc
    

    输出

    3
     1 #include <iostream>
     2 #include <string>
     3 #include <set>
     4 using namespace std;
     5 int main01()
     6 {
     7     int n=0;
     8     string str;
     9 
    10     getline(cin, str);
    11     for (int i = 0; i < 127; i++)
    12     {
    13         if (str.find((char)i) != string::npos)
    14         {
    15             n++;
    16         }
    17     }
    18     cout << n << endl;
    19 
    20     return 0;
    21 }
    22 
    23 int main()
    24 {
    25     int sum;
    26     set<char> s;
    27     char c;
    28     while (cin >> c)
    29     {
    30         if (c >= 0 && c <= 127)
    31             s.insert(c);
    32     }
    33 
    34     cout << s.size() << endl;
    35 
    36     return 0;
    37 }

    题目描述

    给定n个字符串,请对n个字符串按照字典序排列。

    输入描述:

    输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。

    输出描述:

    数据输出n行,输出结果为按照字典序排列的字符串。
    示例1

    输入

    9
    cap
    to
    cat
    card
    two
    too
    up
    boat
    boot

    输出

    boat
    boot
    cap
    card
    cat
    to
    too
    two
    up


     1 #include<iostream>
     2 #include <string>
     3 #include<vector>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     int n;
    10     while (cin>>n&&n>=1)
    11     {
    12         string str;
    13         vector<string> v;
    14         while (n--)
    15         {
    16             cin >> str;
    17             v.push_back(str);
    18         }
    19         sort(v.begin(), v.end());
    20         for (vector<string>::iterator it=v.begin();it!=v.end() ; it++)
    21         {
    22             cout << *it << endl;
    23         }
    24         v.clear();
    25     }
    26     return 0;
    27 }

    链接:https://www.nowcoder.com/questionTerminal/184edec193864f0985ad2684fbc86841
    来源:牛客网

    [编程题]密码验证合格程序

    密码要求:

    1.长度超过8位

    2.包括大小写字母.数字.其它符号,以上四种至少三种

    3.不能有相同长度超2的子串重复

    说明:长度超过2的子串



    输入描述:

    一组或多组长度超过2的子符串。每组占一行



    输出描述:

    如果符合要求输出:OK,否则输出NG

    示例1

    输入

    021Abc9000
    021Abc9Abc1
    021ABC9000
    021$bc9000
    

    输出

    OK
    NG
    NG
    OK



     1 链接:https://www.nowcoder.com/questionTerminal/184edec193864f0985ad2684fbc86841
     2 来源:牛客网
     3 
     4 #include <iostream>
     5 #include <string>
     6 using namespace std;
     7 int main(){
     8     string str;
     9     while(cin >> str){
    10         int flag[4] = {0};
    11         if(str.size() <= 8) goto NG;
    12         for(int i = 0; i < str.size(); ++i)
    13             if(str[i] >= 'a' && str[i] <= 'z') flag[0] = 1;
    14             else if(str[i] >= 'A' && str[i] <= 'Z') flag[1] = 1;
    15             else if(str[i] >= '0' && str[i] <= '9') flag[2] = 1;
    16             else flag[3] = 1;
    17         if(flag[0] + flag[1] + flag[2] + flag[3] < 3) goto NG;
    18         for(int i = 0; i <= str.size()-6; i++)
    19             for(int j = i+3;j < str.size();j++)
    20                 if(str[i] == str[j] && str[i+1] == str[j+1] &&str[i+2] == str[j+2]) goto NG;
    21         OK:
    22         cout << "OK" << endl;continue;
    23         NG:
    24         cout << "NG" << endl;
    25     }
    26     return 0;
    27 }//我的是最短的吗?
     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 int main(){
     5     string str;
     6     while (cin >> str)
     7     {
     8         int flag[4] = { 0 };
     9         if (str.size() <= 8)
    10         {
    11             cout << "NG" << endl;
    12             continue;
    13         }
    14         for (int i = 0; i < str.size(); ++i)
    15         {
    16             if (str[i] >= 'a' && str[i] <= 'z') flag[0] = 1;
    17             else if (str[i] >= 'A' && str[i] <= 'Z') flag[1] = 1;
    18             else if (str[i] >= '0' && str[i] <= '9') flag[2] = 1;
    19             else flag[3] = 1;
    20         }
    21 
    22         if (flag[0] + flag[1] + flag[2] + flag[3] < 3)
    23         {
    24             cout << "NG" << endl;
    25             continue;
    26         }
    27         int temp = 0;
    28         for (int i = 0; i + 3<str.size(); ++i)
    29         {
    30             string s1 = str.substr(i, 3);
    31             if (str.find(s1, i + 3) != -1)
    32             {
    33                 temp = 1;
    34             }
    35 
    36         }
    37         if (temp==1)
    38         {
    39             cout << "NG" << endl;
    40             continue;
    41         }
    42         else
    43         {
    44             cout << "OK" << endl;
    45         }
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    13.kubernetes之pv,pvc,configmap(带补充实例)
    1.docker 数据卷的备份和恢复(非大数据量)
    mysql基础 事务的认识和使用
    jdbc基础 (四) 批处理
    jdbc基础 (三) 大文本、二进制数据处理
    mysql使用基础 sql语句(一)
    linux下安装openssh-server
    jdbc基础 (二) 通过properties配置文件连接数据库
    jdbc基础 (一) MySQL的简单使用
    windows API 开发飞机订票系统 图形化界面 (四)
  • 原文地址:https://www.cnblogs.com/D-DZDD/p/7351444.html
Copyright © 2020-2023  润新知