• 华为OD机考:0030-0031-n*n数组中二进制的最大数、整数的连续自然数之和


    0030–n*n数组中二进制的最大值

    题目描述

    给定一个仅包含0和1的n*n二维矩阵
    请计算二维矩阵的最大值
    计算规则如下
    1、每行元素按下标顺序组成一个二进制数(下标越大约排在低位),
    二进制数的值就是该行的值,矩阵各行之和为矩阵的值
    2、允许通过向左或向右整体循环移动每个元素来改变元素在行中的位置
    比如
    [1,0,1,1,1] 向右整体循环移动两位 [1,1,1,0,1]
    二进制数为11101 值为29
    [1,0,1,1,1] 向左整体循环移动两位 [1,1,1,1,0]
    二进制数为11110 值为30

    输入描述

    1.数据的第一行为正整数,记录了N的大小
    0 2.输入的第2到n+1行为二维矩阵信息
    行内元素边角逗号分割

    输出描述

    矩阵的最大值

    输入样例

    5
            1,0,0,0,1
            0,0,0,1,1
            0,1,0,1,0
            1,0,0,1,1
            1,0,1,0,1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    输出样例

    122
    
    • 1

    C++代码

    //
    // Created by HANWENKE on 2022-09-18.
    //
    #include 
    #include 
    #include 
    #include 
    #include 
    using namespace  std;
    int main(){
    
        int n;
        cin>>n;
        vector<vector<char>>arr(n,vector<char>(n));
        int x;
        getchar();
        for(int i=0;i<n;i++){
            int j=0;
            string s;
            getline(cin,s);
            istringstream s1(s);
            int length=0;
            while(length<s.length()){
                //减去0字符--将字符转为数字
                arr[i][j++]= s[length];
                length+=2;
            }
        }
        int cont=0;
        for(int i=0;i<n;i++){
            int mmax=INT32_MIN;
            string stemp;
            for(int j=0;j<n;j++){
                stemp+=arr[i][j];
            }
            int k=0;
            int sum=0;
            while(k<stemp.length()){
                /*
                 * 主要思想:每次移除第0个位置上数字,将后面的依次向前移动,再将最前面的加到最后面*/
                char ss=stemp[0];
                stemp.erase(stemp.begin());
                stemp.push_back(ss);
                k++;
                //将2进制的字符串转化位10进制的整数
                sum= stoi(stemp, nullptr,2);
                mmax=max(sum,mmax);
            }
            cont+=mmax;
        }
    /*    cout<
    cout<<cont<<endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    0031-整数的连续自然数之和

    题目描述

    一个整数可以由连续的自然数之和来表示 给定一个整数 计算该整数有几种连续自然数之和的表达式 并打印出每一种表达式

    输入描述

    一个目标整数t 1<= t <=1000

    输出描述

    1.该整数的所有表达式和表达式的个数 如果有多种表达式,自然数个数最少的表达式优先输出

    2.每个表达式中按自然数递增输出

    具体的格式参见样例 在每个测试数据结束时,输出一行"Result:X" 其中X是最终的表达式个数

    输入样例:

    9
    
    • 1

    输出样例:

    9=9
    9=4+5
    9=2+3+4
    Result:3
    
    • 1
    • 2
    • 3
    • 4
    示例二
    输入
      10
    输出
      10=10
      10=1+2+3+4
      Result:2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    C++代码

    //
    // Created by HANWENKE on 2022-09-18.
    //
    #include 
    #include 
    #include 
    using namespace  std;
    int main(){
        int n;
        cin>>n;
        vector<string>res;
        for(int i=1;i<=n;i++){
            int sum=0;
            string s=to_string(n);
            s+='=';
            for(int j=i;sum<=n;j++){
                sum+=j;
                s+= to_string(j);
                if(sum==n)
                {
                    res.push_back(s);
                    break;
                }
                s+='+';
            }
        }
        for(int i=res.size()-1;i>=0;i--){
            cout<<res[i]<<endl;
        }
        cout<<"Resualt:"<<res.size();
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    如何更灵活的处理 CloudKit 从云端同步到本地的 CoreData 托管对象
    创新的营销模式与线上商城的完美结合
    蓝桥等考Python组别八级004
    【七:(测试用例)spring boot+testng+xml+mock实现用例管理+数据校验】
    中央党校出版社元宇宙图书编委高泽龙在元宇宙100分第24期做分享
    机器学习_类偏斜的误差度量
    C++中的菱形继承问题及解决方案
    云原生安全:4C~
    961题库 北航计算机 计算机网络 附答案 简答题形式
    联邦学习综述
  • 原文地址:https://blog.csdn.net/weixin_41694574/article/details/126922244