2022.1.15刷题 之The 3n + 1 problem,蛇形矩阵,扫雷

刷的好慢啊,有很多都不会

1.The 3n + 1 problem

#include<iostream>
using namespace std;
#include<string.h>

int main()
{

	int i, j, k, max, n, len, t;
	while (cin >> i >> j)
	{
		//cout << i << " " << j << " ";
		if (i > j) { t = i; i = j; j = t; }
		max = 0;
		for (k = i; k <= j; k++)//从 i循环,到j结束
		{
			n = k;
			len = 1;
			while (n != 1)
			{
				if (n % 2 == 0)
					n /= 2;
				else
					n = n * 3 + 1;
				//cout << n << endl;
				len++;//计数
			}
			if (len > max)
				max = len;//找到最大值
			
		}
		cout << i<< " " << j<< " " << max<<endl;
	}
	return 0;

}

其实这个代码运行还是没有通过,我不知道怎么先输入所有数据再一起输出结果。

后来发现这个小问题用数组就可以解决,ijmax 下表一样

不过这道题我学会了while(cin>>x>>y)很方便

2.扫雷

Minesweeper

这道题又没做出来,感觉自己是对的,但是运行结果不对,看不下去了,没有耐心了

#include<iostream>
using namespace std;
#include<string.h>

int main()
{
	int i,j;
	int num = 0;
	char mi[100][100];
	while (cin >> i >> j && i != 0 && j != 0)
	{
		char mine[100][100];
		for (int m = 0; m <i; m++)
		{
			for (int n = 0; n < j; n++)
				cin >> mine[m][n];
		}
		num = num + 1;
		cout << "Field #" << num << ":" << endl;
		//遍历地图
		for (int m = 0; m < i; m++)
		{
			for (int n = 0; n < j; n++)
			{
				int sum = 0;
				if (mine[m][n] == '*')
				{
					mi[m][n] = '*';

					cout << mi[m][n];
				}
				else
				{
					//以该点为中心,环绕四周遍历查找*
					for (int p = -1; p <= 1; p++)
					{
						for (int q = -1; q <= 1; q++)
						{
							if (mine[i + p][j + q] == '*')
								sum++;
						}
						mi[m][n] = sum+0;
					cout << mi[m][n];
					}
					


				}

			
			}

		}
	}


}

3.蛇形矩阵

1 3 6 10 15
2 5 9 14
4 8 13
7 12
11

每一行都是斜向上移动一下 然后对应值+1

想了好久都没做出来

int a[50][50],N,n=0,i,j,m=1;
cin>>N;//定义蛇形矩阵的长度
 for(i=0;i<N;i++)//给矩阵初始化
    for(j=0;j<N;j++)
        a[i][j]=0;
while(n<N)
{
    for(i=n,j=0;i>=0;i--,j++)
    a[i][j]=m++;    //从左下到右上的i,j变化规律来进行蛇阵输入
    n++;  
}
for(i=0;i<N;i++)
{
    for(j=0;j<N-i;j++)
        printf("%d ",a[i][j]);
    puts("");//换行操作
}
return 0;

换行:puts("");

这个是今天看了别人的题解才知道的

//今天不适合刷题,每道题都是想了好久才有思路

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值