代码:
#include<iostream>
using namespace std;
int n, s = 1, a,i =1;
int main()
{
cin >> n;
while (s <= n * n)
{
cin >> a;
for (int j = 1; j <= a; j++)
{
if (i % 2 == 1)
cout << 0;
else
cout << 1;
if (s % n == 0)
{
cout << endl;
}
s++;
}
i++;
}
return 0;
}
上面一题难度不是特别大,下面这一题难度就略大一点
这一题是上一题的接续,下面着重分析这一题;
思路:
首先输入的是n*n的正方形,我们可以先获取第一行的数字,这样就知道了n是多少,然后再定义一个字符串,每读进去一行,就把这一行接到设定好的字符串后面去,然后最后在统一的计算。
代码:
#include<iostream>
#include<cstdio>
using namespace std;
#include<string.h>
int main()
{
char str[100],ans[100000];//建立两个字符串数组,ans用来存储所有的数字
scanf("%s", str);//先输入第一行
int n = strlen(str);//计算出第一行的数字个数,这也就算出了n
strcat(ans, str);//将输入的连接上结果数组
for (int i = 2; i <= n; i++)//将后面所有行的都连接上结果数组
{
scanf("%s", str);
strcat(ans, str);
}
cout << n << " ";//首先打印第一个数,不能忘记!
int sum = 0;
char num = '0';
for (int i = 0;i<=strlen(ans); i++)//接着进行判断了,i<=strlen(ans)是最后一个数字
//其实是i = n -1,但是需要第n个与第n-1个不同,才能输出sum的值,所以i<=strlen(ans)
{
if (ans[i] == num) {
sum++;
}
else {
cout << sum << " ";
num = ans[i];//将第一个遇到的ans[i] =1,并且将1赋值给num
sum = 1;//计数重置
}
}
return 0;
}