提供一个思路:
将输入的mi转成字符串,取mi中最大的值,比如示例输入的6
000111 000000 000000 000000 000000
000001 000000 000000 000000 000000
000011 000001 000000 000000 000000
001111 000011 000001 000000 000000
111111 -> 001111 -> 000011 -> 000001 -> 000000
011111 000011 000001 000000 000000
000011 000001 000000 000000 000000
000001 000000 000000 000000 000000
001111 000001 000000 000000 000000
000011 000000 000000 000000 000000
第一次输入完后就是第一列的样式
程序代码:
string IntToString(int n, int max)
{
string str = "";
for (int i = 0; i < max - n; i++)
{
str += "0";
}
for (int j = 0; j < n; j++)
{
str += "1";
}
return str;
}
程序代码:
int FindFirstOne(const string str)
{
int i = 0;
for (; i < str.length(); i++)
{
if (str[i] == '1')
break;
}
return i;
}
FindFirstOne的返回值就是字符串中第一个为1的位置
最后根据FindFirstOne的返回值分别检查 str[i+1]、str[i-1]、下一行字符串str2[i]和上一行字符串str1[i]中的值是否为'0'
也就是分别判断上下左右是否为'0'
若为'0'则更新str[i] = '0';
方法比较笨,但是算是个思路吧。










。
给你点个赞。我还没有细看你的代码,我今早也想了个方案,刚刚做出来提交过了,哈哈。。
