广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言打印正方形实例代码
  • 633
分享到

C语言打印正方形实例代码

2024-04-02 19:04:59 633人浏览 薄情痞子
摘要

目录题目描述输入输出样例输入样例输出题目描述 由火柴棍组成的一个n×n的正方形,按从上到下,从左到右的顺序给火柴棍编号,从1开始,比如下图中,一共有24根火柴棍。 问去掉若干个火柴棍

题目描述

由火柴棍组成的一个n×n的正方形,按从上到下,从左到右的顺序给火柴棍编号,从1开始,比如下图中,一共有24根火柴棍。 问去掉若干个火柴棍之后,这个图形中还存在多少个正方形?

如下图所示,n=3时,去掉12,17,23号火柴棒之后,还剩下5个正方形。

输入

第一行是一个整数T(1≤T≤1000),表示样例的个数。

每个样例的第1行是两个整数n(1≤n≤50),表示图形的宽度。 样例的第2行首先是一个整数m(0≤m≤2n(n+1),表示去掉火柴棍的个数,后面接m个整数,表示去掉火柴棍的序号,所有序号都是唯一的。

输出

依次,每行输出一个样例的结果

样例输入

2

0

3 12 17 23

样例输出

14

5

这道题还是有一定难度的,我的思路是:

将横棍与竖棍分别用二维数组表示,每一个棍赋值为1,而移除后其值被赋为0。

从长度为1的小正方形开始。

计算长度时将所在区间的值加起来,若四条边相等,且都等于小正方形边长,则符合。 


#include <stdio.h>
int heng[55][55],shu[55][55];
void give(int n)
{
    int i,j;
    for(i = 1;i <= n+1;i++)
    {
        for(j = 1;j <= n+1;j++)
        {
            heng[i][j] = 1;
            shu[i][j] = 1;
        }
    }
    
}
void Remove(int n,int m)//去除木棍
{
    int x,p;
    x = m / (2*n+1) +1;
    p = m % (2*n+1);
    if(p>=1 && p<=n)
    heng[x][p] = 0;
    else if(p==0)
    shu[x-1][n+1] = 0;
    else if(p>n && p <=2*n)
    shu[x][p-n] = 0;
}
int hl(int h,int s,int w)//h行从s到w列的横的长度
{
    int sum = 0;
    for(;s <= w;s++)
    sum += heng[h][s];
    return sum;
}
int sl(int s,int i,int j)//s列从i到j行竖的长度
{
    int sum = 0;
    for(;i <= j;i++)
    sum += shu[i][s];
    return sum;
}
int count(int len,int n)//len+1为小正方形边长
{
    int i,j,sum=0;
    for(i = 1;i+len <= n;i++)
    {
        for(j = 1;j+len <= n;j++)
        {
            if((hl(i,j,j+len)==len+1) && (sl(j,i,i+len)==len+1) 
            && (hl(i+len+1,j,j+len)==len+1) && (sl(j+len+1,i,i+len)==len+1))
            {
                sum++;
            }
        }
    }
    return sum;
}
int main() 
{
    int n,t,m,i,j,len,ans,num;
    scanf("%d",&t);
    while(t--)
    {
        ans = 0;
        scanf("%d",&n);
        give(n);
        scanf("%d",&num);
        for(i = 0;i < num;i++)
        {
            scanf("%d",&m);
            Remove(n,m);
        }
        for(len = 0;len < n;len++)
        {
            ans += count(len,n);
        }
        printf("%d\n",ans);
    }
	return 0;
}

到此这篇关于C语言打印正方形实例代码的文章就介绍到这了,更多相关C语言正方形内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言打印正方形实例代码

本文链接: https://www.lsjlt.com/news/161315.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言打印正方形实例代码
    目录题目描述输入输出样例输入样例输出题目描述 由火柴棍组成的一个n×n的正方形,按从上到下,从左到右的顺序给火柴棍编号,从1开始,比如下图中,一共有24根火柴棍。 问去掉若干个火柴棍...
    99+
    2022-11-12
  • C语言打印杨辉三角形的示例代码
    目录1. 题目描述2. 解题思路3. 动图演示4. 代码实现Step1Step2居中显示5. 完整代码6. 特性总结1. 题目描述 杨辉三角形 解题之前,我们先来了解一下杨辉三角形到...
    99+
    2022-11-13
  • C语言打印各种图案实例代码
    1、线段图案 #include<stdio.h> int main() { int a = 0; while(~scanf("%d",&a))...
    99+
    2022-11-12
  • C语言实现用 * 打印X形图案
    目录C语言 用 * 打印X形图案C语言 输出X图形C语言 用 * 打印X形图案 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜...
    99+
    2022-11-16
    C语言打印图案 用*打印X形图案 C用*打印X形图案
  • python 打印直角三角形,等边三角形,菱形,正方形的代码
    三角形 等腰直角三角形1 2.7 #coding:utf-8 rows = int(raw_input('输入列数: ')) i = j = k = 1 #声明变量,i用于控制外层循环(图形行数),j用...
    99+
    2022-06-04
    角形 正方形 直角
  • C语言实现循环打印星号图形再镂空
    目录C语言 循环打印星号图形再镂空镂空的原理C语言 打印菱形星号“*”图案题目C语言 循环打印星号图形再镂空 镂空的原理 判断什么时候打印星号,什么时候打印空...
    99+
    2022-11-16
    C语言循环打印 循环打印星号图形 打印星号图形镂空
  • 怎么使用c语言输出实心正方形
    使用C语言输出实心正方形的方法可以通过循环嵌套来实现。具体的方法如下:```c#include int main() {int si...
    99+
    2023-08-25
    c语言
  • C语言怎么实现循环打印星号图形再镂空
    这篇“C语言怎么实现循环打印星号图形再镂空”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言怎么实现循环打印星号图形再镂空...
    99+
    2023-07-04
  • C语言实现栈的示例代码
    目录一、了解栈的结构特点二、具体实现补充 栈的用处一、了解栈的结构特点 栈是一种特殊的线性表,只允许从一端进出数据,称为后进先出,先进后出。 压栈:栈的插入操作叫做进栈/压...
    99+
    2022-11-13
  • C语言实现三子棋实例代码
    我是半自主的完成了这个程序,看了B站鹏哥视频并仔细思索后才做出来的,我没有完全采用他的方法,导致程序还有一些不足之处,还请各位大佬指出。 首先,我将该程序的实现分为3个板块,main...
    99+
    2022-11-12
  • C语言动态顺序表实例代码
    目录顺序表概念:一.准备工作二、顺序表的基本操作 1.顺序表的初始化函数2.尾插函数(在尾部插入数据)3.头插函数(在数组头部插入数据) 4.尾删函数5.头删函数6.在第pos的位置...
    99+
    2022-11-12
  • C语言实现通讯录的示例代码
    目录一、Contact.h文件二、Contact.c文件三、test.c文件一、Contact.h文件 包含函数的声明 #pragma once #define _CRT_SECUR...
    99+
    2022-11-13
    C语言实现通讯录 C语言 通讯录
  • C语言实现大顶堆的示例代码
    目录堆的实现1.堆结构2.堆的种类3.大顶堆代码实现堆的实现 1.堆结构 逻辑结构上类似于 一棵 “树” 2.堆的种类 大顶堆结构: 一种特殊的树:其每个...
    99+
    2022-11-13
  • C语言模拟实现memmove的示例代码
    目录前言例子memmove的模拟实现具体实现步骤总结前言 上一篇我们介绍了memcpy和strcpy的区别,以及memcpy模拟实现,但这两个库函数都有一个缺点,那就是不能自己复制自...
    99+
    2022-12-29
    C语言实现memmove C语言 memmove
  • 基于C语言打造高效通讯录的示例代码
    目录准备工作初始化通讯录从文件中加载信息检查容量销毁通讯录添加联系人打印数据删除联系人查找联系人修改联系人排序通讯录保存通讯录总结本篇博客会讲解如何使用C语言实现一个通讯录。实现通讯...
    99+
    2023-05-18
    C语言实现高效通讯录 C语言实现通讯录 C语言通讯录
  • C语言实现三子棋实例代码怎么写
    这期内容当中小编将会给大家带来有关C语言实现三子棋实例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先,我将该程序的实现分为3个板块,main,game.h,和game.c;代码如下:#def...
    99+
    2023-06-22
  • 用C语言实现扫雷小游戏实例代码
    本篇内容主要讲解“用C语言实现扫雷小游戏实例代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“用C语言实现扫雷小游戏实例代码”吧!本文实例为大家分享了C语言版扫雷小游戏的具体代码,供大家参考,具...
    99+
    2023-06-20
  • C#实现自定义打印文字和图片的示例代码
    目录1.调用打印机设置2.关联文档3.绘制内容C#中打印其实就是自己绘图+调用系统打印函数,于是便有了以下操作 1.调用打印机设置 如果你想在打印前设置打印机属性(或者切换打印机),...
    99+
    2022-11-13
  • C语言实现动态链表的示例代码
    目录结构体定义已经函数声明函数实现创建一个链表判断链表是否为空获得链表中节点的个数在某个特定的位置插入一个元素获得指定下标的节点的元素删除一个节点链表逆序链表的清空链表的销毁链表的遍...
    99+
    2022-11-13
  • C语言分支与循环实例代码分析
    这篇文章主要介绍“C语言分支与循环实例代码分析”,在日常操作中,相信很多人在C语言分支与循环实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言分支与循环实例代码...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作