随机行走——数据结构算法实验

参考博客https://blog.csdn.net/hxxjxw/article/details/84986031

随机行走——数据结构算法实验

    • 实验要求
    • 代码1

实验要求

随机行走——数据结构算法实验_第1张图片随机行走——数据结构算法实验_第2张图片

代码1

#include
#include
#include
using namespace std;

int row;
vector<vector<int>> arr;
int x, y;
int random()									//随机产生0~3范围中的一个数,代表走的方向
{
	return rand() % 4;
}

void process(int e)								// e代表走的方向
{
	if (e == 1) {								// 该行第奇数个三角形往下走,第偶数个三角形往上走;
		if ((x % 2 == 0) && (x >= 2 && y >= 2)) {//偶数三角形上跳
			x--; y--;
		}
		else									//还要判断是否越界
			if (x <= arr[y-1].size() && y <= row-1 )// 奇数三角形小于该行三角形个数且不是最后一行
				if (y != row){
					x++; y++;
				}
	}
	if (e == 2)									//往左走
		if (x >= 2 )							//保证不越界
			x--;
	if (e == 3)									//往右走
		if (x < arr[y-1].size() )				//保证不越界
			x++;
}

void print() {
	for (int i = 1; i <= row; i++)
	{
		for (int j = 1; j <= 1 + 2 * (i - 1); j++)
			cout << arr[i - 1][j - 1] << "  ";
		cout << endl;
	}
}

bool judge()									//判断所有三角形是否都已经走过
{
	for (int i = 1; i <= row; i++)
		for (int j = 1; j <= 1 + 2 * (i - 1); j++)
			if (arr[i - 1][j - 1] == 0) return 0;
	return 1;
}

int main()
{
	srand(time(0));
	int count = 1;
	x = 1; y = 1;
	cout << "input row : ";
	cin >> row ;
	arr.resize(row);
	for (int i = 0; i < row; i++) 
		arr[i].resize(1 + 2 * i);				// column = 1 + 2 * i
	while (1)
	{
		process(random());
		arr[y-1][x-1]++;
//		for (int i = 1; i <= row; i++)			// 调试
//		{
//			for (int j = 1; j <= 1+2*(i-1); j++)
//				cout << arr[i-1][j-1] << "  ";
//			cout << endl;
//		}
		if (judge()){							// 判断所有三角形是否都已经走过
			print();
			break;
		}
		else count++;
	}
	cout << "总步数:" << count << endl;
	return 0;
}

剩下的坑:

在填了,在填了(0%)

你可能感兴趣的:(实验)