> 文章列表 > C/C++每日一练(20230423)

C/C++每日一练(20230423)

C/C++每日一练(20230423)

目录

1. 多组输入求和  ※

2. 螺旋矩阵 II  🌟🌟

3. 路径交叉  🌟🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 多组输入求和

给定 2 个正整数 a, b ,a 和 b 最多可能有 40 位,求出 a + b 的和。

输入描述

两个正整数 a, b,a 和 b 最多可能有 40 位。一行表示一个数。

输出描述

a + b 的和。

样例输入

111111111111111111111111111111111111111
222222222222222222222222222222222222222

样例输出

333333333333333333333333333333333333333

出处:

https://edu.csdn.net/practice/26319576

代码:

#include <iostream>
#include <cstring>
using namespace std;
int main(){while (1){char s1[200],s2[200];int a[200]={0},b[200]={0},l1,l2,c,k,i;gets(s1);l1=strlen(s1);if (l1 == 0) break;gets(s2);l2=strlen(s2);if(l1<l2) k=l2;else k=l1;c=k;for(i=0;i<l1;k--,i++)a[k]=s1[l1-1-i]-'0';for(k=c,i=0;i<l2;k--,i++)b[k]=s2[l2-1-i]-'0';for(i=c;i>=0;i--){a[i]+=b[i];if(a[i]>=10){a[i]=10;a[i-1]++;}}if(a[0]!=0){for(i=0;i<=c;i++)cout<<a[i];}else{for(i=1;i<=c;i++)cout<<a[i];}cout << endl;}
}

输出:


2. 螺旋矩阵 II

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

以下程序实现了这一功能,请你填补空白处内容:

···c++
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    vector<vector<int>> generateMatrix(int n)
    {
        vector<vector<int>> ans(n, vector<int>(n, 0));
        int i, j = 0, time = 0, cnt = 1; //time记录第几圈
        ans[0][0] = 1;
        while (cnt < n * n)
        {
            ___________________;
            time++;
        }
        return ans;
    }
};
```

出处:

https://edu.csdn.net/practice/26319577

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:vector<vector<int>> generateMatrix(int n){vector<vector<int>> ans(n, vector<int>(n, 0));int i, j = 0, time = 0, cnt = 1; //time记录第几圈ans[0][0] = 1;while (cnt < n * n){for (i = time, j++; j < n - time && cnt < n * n; j++)ans[i][j] = ++cnt;for (j--, i++; i < n - time && cnt < n * n; i++)ans[i][j] = ++cnt;for (i--, j--; j >= time && cnt < n * n; j--)ans[i][j] = ++cnt;for (j++, i--; i > time && cnt < n * n; i--)ans[i][j] = ++cnt;time++;}return ans;}
};string vectorToString(vector<int> arr){string res = "[";int size = arr.size();for (int i = 0; i < size; i++) {res += to_string(arr[i]);if (i != size-1) {res += ",";}}return res + "]";
}string vector2DToString(vector<vector<int>> vect) {string res = "[";size_t len = vect.size();for (size_t i = 0; i < len; i++){res += vectorToString(vect[i]);if (i+1 != len)res += ",";}res += "]";return res;
}int main()
{Solution s;cout << vector2DToString(s.generateMatrix(3)) << endl;return 0;
}

输出:

[[1,2,3],[8,9,4],[7,6,5]]


3. 路径交叉

给你一个整数数组 distance 

从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。

判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。

示例 1:

输入:distance = [2,1,1,2]
输出:true

示例 2:

输入:distance = [1,2,3,4]
输出:false

示例 3:

输入:distance = [1,1,1,1]
输出:true

提示:

  • 1 <= distance.length <= 10^5
  • 1 <= distance[i] <= 10^5

出处:

https://edu.csdn.net/practice/26319578

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:bool isSelfCrossing(vector<int> &distance){int all_step = distance.size(), current_step = 0;if (all_step < 4)return false;current_step = 2;while (current_step < all_step && distance[current_step] > distance[current_step - 2])current_step++;if (current_step == all_step)return false;if (distance[current_step] >= distance[current_step - 2] - (current_step > 3 ? distance[current_step - 4] : 0))distance[current_step - 1] -= current_step > 2 ? distance[current_step - 3] : 0;current_step++;while (current_step < all_step && distance[current_step] < distance[current_step - 2])current_step++;return current_step != all_step;}
};int main()
{Solution s;vector<int> distance = {2,1,1,2};cout << (s.isSelfCrossing(distance) ? "true" : "false") << endl;distance = {1,2,3,4};cout << (s.isSelfCrossing(distance) ? "true" : "false") << endl;distance = {1,1,1,1};cout << (s.isSelfCrossing(distance) ? "true" : "false") << endl;return 0;
}

输出:

true
false
true


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏