洛谷数组P1319压缩技术

做题思路:

        这里表示输入的第一个数字N为N*N的方阵,后面的数字表示连续输入几个1或者0,定义result表示实际输出的数字0或1(result输出0或1,可以用绝对值abs我们初始化result为0,我们将它-1后再取绝对值就可以了,result为1时,我们-1直接变为0),num表示输出的数,sum表示输出的第几个数字,当sum除N的余数为0时,换行。变量的用处我们想好后,接下来就是要怎么处理,这时我们可以参考do-while循环,先录入num输出result再判断是否需要换行。

Java代码:

import java.util.Scanner;

import static java.lang.Math.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        //result表示实际写上去的数字0或1
        int result = 0;
        //sum表示这一行第几个数字
        int sum = 0;
        do {
            //num表示录入的数字
            int num = sc.nextInt();
            for (int i = 0; i < num; i++) {
                System.out.print(result);
                sum++;
                if(sum % N == 0){
                    System.out.println();
                }
            }
            result = abs(result - 1);
        }while(sum != N*N);
    }
}

C语言代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main() {
	int N = 0;
	int num = 0;
	int result = 0;
	int sum = 0;
	scanf("%d", &N);
	do
	{
		scanf("%d", &num);
		for (int i = 0; i < num; i++) {
			printf("%d", result);
			sum++;
			if (sum % N == 0) {
				printf("\n");
			}
		}
		result = abs(result - 1);
	} while (sum != N * N);
	return 0;
}

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值