小说网 找小说 无限小说 烟雨红尘 幻想小说 酷文学 深夜书屋

基于visual Studio2013解决面试题之0202上下排




题目



解决代码及点评

/*
	上下排是指:根据上排的数字,下排对应的数字是上排数字在下排出现的次数,比如
	0 1 2 3 4 5 6 7 8 9
	6 2 1 0 0 0 1 0 0 0
	
	0在下排出现6次
	1在下排出现2次
	2在下排出现1次
	...

	现在已知上排,求下排

	思路:
		不停的循环尝试,一直尝试到下排没有数据修改为止
*/


#include <iostream>
#include <iomanip>
#include "array"
using namespace std;


int main()
{
	array<int, 10> a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	array<int, 10> b = a;  // 让下排初始化为上排
	bool success = false;  // 成功标记,当下排数据不再改变时,则成功了

	while (!success)
	{
		bool tmp = true;  // 下排变动标记,如果下排有变动,则标记为false,所以初始化为true

		for (int i = 0; i < 10; i++)   //对上排的每个数和下排的每个数进行循环
		{
			int count = 0;	//计数
			for (int j = 0; j < 10; j++)
			{
				if (b[j] == a[i])  // 看下排有多少个和上排i位置的数值相等,如果相等则累加
				{
					count++;
				}
			}
			// 看i位置的下排是不是正好等于累加的count,如果不是,则要修改,一旦修改,这次结果则还是失败的
			if (count != b[i])	
			{
				b[i] = count;
				tmp = false;  // tmp置为false表明下排还在动呢,一个数字动了也会导致整个下排错乱
			}
		}

		// 讲success置为tmp
		success = tmp;
	}

	for (int i = 0; i < 10; i++)
	{
		cout << b[i] << " ";
	}

	system("pause");
	return 0;
}

代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6704519

解压密码:c.itcast.cn


下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”


2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行


程序运行结果









posted on 2013-12-13 01:20  牛栏山1  阅读(125)  评论(0编辑  收藏  举报

导航