昨晚搜狐第一题 ac

#include <iostream>
#include <vector>
#include <string>
using namespace std;


int main()
{
	int n, m;
	cin >> n >> m;
	vector<int> dict(m);
	for (auto i = 0; i != m; ++i)
		cin >> dict[i];

	vector<int> res;
	int begin = 0;
	int index = 0;
	bool flag = false;
	if (dict[0] == 1) { res.push_back(1); ++begin; ++index; flag = true; }
	while (begin < n)
	{
		if (index == m) index = 0;
		if (begin == 0 || flag)
		{
			for (auto i = 0; i != dict[index]; ++i)
				res.push_back(dict[index]);	
			flag = false;
		}
		else
		{
			for (auto i = 0; i != res[begin]; ++i)
				res.push_back(dict[index]);
		}
		++begin;
		++index;
	}
	for (auto i = 0; i != n; ++i)
		cout << res[i] << endl;
    return 0;
}

#搜狐#
全部评论
点赞 回复 分享
发布于 2017-08-29 10:41
niubi
点赞 回复 分享
发布于 2017-08-29 11:56
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) {//注意while处理多个case int n = in.nextInt(); int m = in.nextInt(); int[] a = new int[m]; int[] b = new int[n]; for(int i=0; i<m; ++i) { a[i] = in.nextInt(); } Kolakoski(a, m, b, n); //构造Kolakoski序列 for(int i=0; i<n; ++i) { System.out.println(b[i]); } } in.close(); } private static int[] Kolakoski(int[] a, int m, int[] b, int n) { int cur = a[0]; int flag = 0; b[0] = a[0]; if(cur > 1) b[1] = cur;//若第一个数字为1,需要初始化前两位,因为a中不能有重复数,所以不用初始化第三位 else b[1] = a[1]; int k=0; for(int i=0;k<n;++i) { for(int j=k;(j<k+b[i])&&(j<n);++j) { //注意判断下标是否超过n b[j]=cur; } k=k+b[i]; if(flag<(m-1)) { ++flag; }else { flag = 0; } cur=a[flag]; } return b; } } java版,大佬们过过眼
点赞 回复 分享
发布于 2017-08-29 11:03

相关推荐

评论
点赞
收藏
分享

创作者周榜

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