刷的好慢啊,有很多都不会
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("");
这个是今天看了别人的题解才知道的
//今天不适合刷题,每道题都是想了好久才有思路