搜狐第一题40%,我是这个原因!

很多人都说是因为a[0]=1的情况,可能写的不太一样。
我这个应该是没有考虑a[0] = a[m-1]的情况。我的程序如下:
# include <iostream>

using namespace std;

int main()
{
	int n, m;
	cin >> n >> m;
	cin.get();
	int *a = new int[m];
	int *b = new int[n];
	for(int i=0; i<m; i++)
		cin >> a[i];
	cin.get();

	int p = 0, q = 0;	//p快,q慢
	b[0] = a[0];

	for(int i=0; i<n;)
	{
		for(int j = 0; j<b[q]; j++)
		{
			if(i<n)
				b[i++] = a[p];			
		}
		if(p==m-1)
			p = 0;
		else
			p++;
		q++;
	}

	for(int i = 0;i<n; i++)
		cout << b[i] <<endl;
		
	delete [] a;
	delete [] b;
	cin.get();
}

全部评论
我第一次也是40%,是因为第二行第一个数为1时情况特殊
点赞 回复 分享
发布于 2017-08-28 22:41
//我的思路貌似跟你有点像,AC了,你想看可以看看。 class Solution05{ public: void test()  {   int m, n;   cin >> n >> m;   int *arr = new int[m];   int *res = new int[n];   memset(res, 0, n);   int cnt = 0;   for (int i = 0; i < m; i++)    cin >> arr[i];   int j = 0;   int index = 0;   while (cnt<n)   {    int tmp = res[index] > 0 ? res[index] : arr[j];    while (tmp--)    {     if (cnt >= n)      break;     res[cnt] = arr[j];     cnt++;    }    j = (j + 1) % m;    index++;   }   for (int i = 0; i < n; i++)    cout << res[i] << endl;   delete[]arr;   delete[] res;  } };
点赞 回复 分享
发布于 2017-08-28 21:29
你的问题应该是没有考虑第一个数字是1的情况
点赞 回复 分享
发布于 2017-08-28 21:11
题目说了a[0] != a[m-1],所以不是这个问题
点赞 回复 分享
发布于 2017-08-28 21:06
我也考虑了,可还是有越界
点赞 回复 分享
发布于 2017-08-28 20:55

相关推荐

dachang盒子:26届秋招必须有实习经历,建议找个实习过度下,同时项目重复率也比较高没有什么难点亮点,我这里有大厂真实的项目可以提供给你学习也可以给你包装大厂实习来提高你的竞争力,感兴趣的话可以私信我或者点我主页简介
你已经投递多少份简历了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务