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

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

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

目录

1. 二维数组找最值  🌟🌟

2. 排序  🌟

3. 二叉树展开为链表  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 二维数组找最值

从键盘输入m(2<=m<=6)行n(2<=n<=6)列整型数据,编程找出其中的最大值及其所在位置的行列下标值并输出。 输入格式: 在第一行输入数据的行数m和列数n的值,从第二行开始以二维数组的形式依次输入m行n列整型数据。 输出格式: 依次输出最大值及其所在位置的行列下标值,中间以逗号,分隔,最后换行。

输入样例:

3 4
1 2 3 4
8 9 7 6
5 6 7 0

输出样例:

9,1,1

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

```c++
#include <stdio.h>
int main()
{
    int a[6][6];
    int m, n;
    int i, j;
    int max;
    int indexx = 0, indexy = 0;
    scanf("%d %d", &m, &n);
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", &a[i][j]);
            if (i == 0 && j == 0)
            {
                max = a[i][j];
                indexx = 0;
                indexy = 0;
            }
            else
            {
                _____________;
            }
        }
    }
    printf("%d,%d,%d\\n", max, indexx, indexy);
    return 0;
}
```

出处:

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

代码:

#include <stdio.h>
int main()
{int a[6][6];int m, n;int i, j;int max;int indexx = 0, indexy = 0;scanf("%d %d", &m, &n);for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &a[i][j]);if (i == 0 && j == 0){max = a[i][j];indexx = 0;indexy = 0;}else{if (a[i][j] > max){max = a[i][j];indexx = i;indexy = j;}}}}printf("%d,%d,%d\\n", max, indexx, indexy);return 0;
}

输入输出:

3 4
1 2 3 4
8 9 7 6
5 6 7 0
9,1,1


2. 排序

由键盘上输入n个整数,请将这些数从大到小排序,然后输出排序后的数列。

输入

输入包含两行:

第一行是n(1 <= n <= 1000)。

第二行是n个整数,邻近两数之间用一个空格隔开。

输出

输出排序后的n个整数,邻近两数之间用一个空格隔开。

输入示例

5
8 2 5 1 2

输出示例

8 5 2 2 1

数据范围

输入和输出均为int范围的整数

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

```c++
#include <iostream>
using namespace std;
int main()
{
    int n, tmp;
    cin >> n;
    int *a = new int[n];
    for (int i = 0; i < n; i++)
        cin >> a[i];
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            __________________;
        }
    }
    for (int i = 0; i < n; i++)
    {
        cout << a[i];
        if (i != n - 1)
            cout << " ";
    }
    return 0;
}
```

出处:

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

代码:

#include <stdio.h>
int main()
{int a[6][6];int m, n;int i, j;int max;int indexx = 0, indexy = 0;scanf("%d %d", &m, &n);for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &a[i][j]);if (i == 0 && j == 0){max = a[i][j];indexx = 0;indexy = 0;}else{if (a[i][j] > max){max = a[i][j];indexx = i;indexy = j;}}}}printf("%d,%d,%d\\n", max, indexx, indexy);return 0;
}

输出:

5
8 2 5 1 2
8 5 2 2 1


3. 二叉树展开为链表

给你二叉树的根结点 root ,请你将它展开为一个单链表:

  • 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
  • 展开后的单链表应该与二叉树 先序遍历 顺序相同。

示例 1:

输入:root = [1,2,5,3,4,null,6]
输出:[1,null,2,null,3,null,4,null,5,null,6]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [0]
输出:[0]

提示:

  • 树中结点数在范围 [0, 2000] 内
  • -100 <= Node.val <= 100

进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗?

出处:

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

代码:

#define null INT_MIN
#include <bits/stdc++.h>
using namespace std;struct TreeNode
{int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};class Solution
{
public:void rconnect(TreeNode *&node, TreeNode *pmove){if (pmove == nullptr)return;node->right = new TreeNode(pmove->val);node->left = nullptr;node = node->right;rconnect(node, pmove->left);rconnect(node, pmove->right);}void flatten(TreeNode *root){if (root == nullptr)return;TreeNode *head = new TreeNode(null);TreeNode *newroot = head;rconnect(head, root);newroot = newroot->right->right;root->right = newroot;root->left = nullptr;}
};TreeNode* buildTree(vector<int>& nums)
{if (nums.empty()) return nullptr;TreeNode *root = new TreeNode(nums.front());queue<TreeNode*> q;q.push(root);int i = 1;while(!q.empty() && i < nums.size()){TreeNode *cur = q.front();q.pop();if(i < nums.size() && nums[i] != null){cur->left = new TreeNode(nums[i]);q.push(cur->left);}i++;if(i < nums.size() && nums[i] != null){cur->right = new TreeNode(nums[i]);q.push(cur->right);}i++;}return root;
}vector<int> preorderTraversal(TreeNode* root) {vector<int> res;stack<TreeNode*> st;st.push(root);while (!st.empty()) {TreeNode* node = st.top();st.pop();if (node != nullptr) {res.push_back(node->val);st.push(node->right);st.push(node->left);}elseres.push_back(null);}while (res.back()==null)res.pop_back();return res;
}string vectorToString(vector<int> vect) {stringstream ss;ss << "[";for (size_t i = 0; i < vect.size(); i++){ss << (vect[i] == null ? "null" : to_string(vect[i]));ss << (i < vect.size() - 1 ? "," : "]");}return ss.str();
}int main() {Solution s;vector<int> nums = {1,2,5,3,4,null,6};  TreeNode* root = buildTree(nums);  s.flatten(root); cout << vectorToString(preorderTraversal(root)) << endl;return 0;  
}

输出:

[1,null,2,null,3,null,4,null,5,null,6]


🌟 每日一练刷题专栏 🌟

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

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

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

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

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

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏