华为od机试真题 c++ 实现【机器人】
时间: 2023-05-08 07:00:35 浏览: 126
题目描述:
有一个机器人在坐标系中移动,一开始在原点(0,0)处。机器人可以执行三种操作:向上移动一格、向下移动一格、向右移动一格。请编写程序,实现机器人的移动。
输入格式:
输入共n行,每行包含一个字符,表示机器人的操作。其中,字符U表示向上移动一格,字符D表示向下移动一格,字符R表示向右移动一格。
输出格式:
输出移动结束后机器人所在的坐标位置,分别为横坐标和纵坐标,用空格隔开。
输入样例:
DDDRUUUU
输出样例:
1 2
解题思路:
对于此题,我们可以定义两个变量x和y,表示机器人的横坐标和纵坐标。然后,对于读入的每个字符,根据其值更新x和y的值即可。
当读入字符D时,将y减1;当读入字符U时,将y加1;当读入字符R时,将x加1。
最后,输出x和y的值即可。
代码实现:
相关问题
华为od机试真题 c++ 实现【字符串重新排列
题目描述:
给定一个字符串,将其中的小写字母和大写字母分别重新排列,使得所有的小写字母都排在大写字母的前面。
解题思路:
本题的思路比较简单,我们只需要遍历整个字符串,将其中的小写字母和大写字母分别存入两个数组中,然后将它们依次拼接起来就可以了。
具体步骤如下:
1. 定义两个数组,分别用于存放小写字母和大写字母。
2. 遍历字符串,将其中的小写字母存入小写字母数组中,将其中的大写字母存入大写字母数组中。
3. 将小写字母数组和大写字母数组依次拼接起来,并将拼接后的字符串输出即可。
代码实现:
#include <stdio.h>
#include <string.h>
int main()
{
char str[100]; //定义字符串
char lower[100], upper[100]; //定义存放小写字母和大写字母的数组
int i, j=0, k=0; //i为循环变量,j和k分别用于记录小写字母数组和大写字母数组中的元素个数
printf("请输入字符串:");
scanf("%s", str); //输入字符串
for(i=0; i<strlen(str); i++) //遍历字符串
{
if(str[i]>='a' && str[i]<='z') //如果是小写字母
{
lower[j] = str[i]; //将它存入小写字母数组中
j++;
}
else if(str[i]>='A' && str[i]<='Z') //如果是大写字母
{
upper[k] = str[i]; //将它存入大写字母数组中
k++;
}
}
lower[j] = '\0'; //在小写字母数组最后加上'\0',表示字符串结束
upper[k] = '\0'; //在大写字母数组最后加上'\0',表示字符串结束
strcat(lower, upper); //将小写字母数组和大写字母数组依次拼接起来
printf("重新排列后的字符串为:%s\n", lower); //输出拼接后的字符串
return 0;
}
华为od机试真题 c++
华为OD机试真题C是一道非常典型的算法题目,难度适中,考察了对数据结构和算法的理解以及实现能力。以下从题目要求、解题思路和实现细节三个方面来进行解读。
1. 题目要求
题目要求实现一个整数数组排序算法,并输出排完序后的数组和排序过程中进行的交换次数。
2. 解题思路
排序算法有很多种,例如冒泡排序、选择排序、插入排序、归并排序、快速排序等等,每种排序算法都有其适合的场景和优缺点。在本题中,我们可以直接使用插入排序算法来实现,因为插入排序算法简单易懂,且对于小规模的数据排序时可以具备不错的性能表现。
插入排序算法的基本思路是,将数组分为已排序和未排序两个部分,每次从未排序的部分中选取一个数插入到已排序的部分中,使得插入后的已排序部分依然有序。具体实现过程可参照下面的代码:
```
void insertSort(int *arr, int length) {
int i, j, temp, count = 0;
for (i = 1; i < length; i++) {
temp = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
count++;
}
arr[j + 1] = temp;
}
for (i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
printf("\n交换次数:%d\n",count);
}
```
3. 实现细节
在实现中需要注意以下几点:
- 插入排序算法要起始下标为1的位置开始,因为只有一个数时认为已经有序。
- 在每次进行插入前,要将待插入的数先用一个临时变量存储起来,插入位置是从已排序部分的末尾往前依次扫描,直到找到第一个大于等于临时变量的位置,然后插入到这个位置的后面,之后将其它元素依次后移一位。
- 在插入时需要计算交换次数count,其表示排序过程中进行的比较并交换元素的次数,可以根据需要在插入排序函数中增加一个计数器即可。
最后,需要注意的是,本题并未要求对原数组进行修改,可以在函数内部将排序好的数组打印出来,也可以将数组的副本进行排序,从而保留原数组。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)