蘑菇街在线笔试题

今晚参加了蘑菇街的在线笔试题,我学的c++,没学java和python,选择题java和python挺多的基本不会。

笔试题有两道,第一道对了90%,仔细想了想应该是输入数字的上限没有控制,逻辑应该没有问题了。说白了冒泡排序。只需要计算需要交换多少次数字让数字序列变为有序。

例如:

输入 输出

2   -----》表示两串数字序列

3   -----》第一个数字序列有3个数,分别如下:

1 2 3

4 ------》第二个数字序列有4个数....

4 3 2 1


我的原代码如下:

#include <iostream>
using namespace std;

int timesOfSwap(int *arr, int len)
{
	if (arr == NULL || len < 1)
	{
		return -1;
	}

	int sum = 0;
	for (int i = 0; i < len-1; ++i)
	{
		for (int j = 0 ; j < len - i -1 ; ++j)
		{
			if (arr[j] > arr[j + 1])
			{
				swap(arr[j], arr[j + 1]);
				sum++;
			}
		}
	}
	return sum;
}

int main()
{
	int t = 0; //times
	int n = 0; //number
	cin >> t;
   
		//问题是没有考虑上边界
	if (t < 1)
	{
		return 1;
	}

	int *lenofarray = new int[t];
	int **array = new int*[t];
	for (int i = 0; i < t; ++i)
	{
		cin >> n;
		if (n < 1)
		{
			return 1;
		}
		array[i] = new int[n];
		lenofarray[i] = n;

		for (int j = 0; j < n; ++j)
		{
			cin >> array[i][j];
		}
	}

	for (int k = 0; k < t; ++k)
	{
		cout << timesOfSwap(array[k], lenofarray[k]) << endl;
	}

	return 0;
}


第二道题当时没有写出来,原问题大概如下:

有n桶油漆,用这n桶油漆输出最大的数字,刷数字1~9所需的油漆数字接着n后输入

输入:

n

543212345

输出:

55555

我没有写出来,当时就是找需要最少的油漆的数字,然后统计刷这个数字的个数,我觉得能刷出最长的数字就是题目所求的,但是没有考虑完全。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值