【数据结构】寻找规律:算对角线长度||杨辉三角||魔方问题(C语言实现)

ops/2025/2/12 22:47:21/

目录标题

  • 三个算法
    • 1. 求矩阵对角线元素之和(C语言)
    • 2. 杨辉三角
    • 3. 幻方问题
  • 总结:都是通过寻找规律来找出构造逻辑然后用循环来实现

三个算法

1. 求矩阵对角线元素之和(C语言)

1.初始化行循环变量i和列循环遍历j,求和变量sum,初始化全部的元素为0
2.用书输入9个数
3.执行换行之后

关键点:
1.对角线的元素的【i】和【j】是相等的[左上到右下]
2.右上到坐下的坐标,相加为2,那么i+j=2——>i=2-j

# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>int main()
{//初始化变量值;int i = 0;int j = 0;int sum = 0;int a[3][3] = { 0 };//获取数组a的值;printf("请输入9个整数!!!!\n");//循环;for (i = 0; i < 3; i++){//列;for (j = 0; j < 3; j++){//提示用户;printf("a[%d][%d]=", i, j);//获取用户输入的数据;scanf("%d", &a[i][j]);}}//换行;printf("\n");//提示用户;printf("您输入的矩阵为:\n");//打印数组;for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){//打印;printf("%5d", a[i][j]);}//换行;printf("\n");}//换行;printf("\n");//运算;for (i = 0; i < 3; i++){//运算;sum += a[i][i] ;sum += a[i][2-i];}//输出结果;printf("对角线之和为:%d", sum);return 0;
}

2. 杨辉三角

问题描述:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
算法构造出来这样的三角形

规律:

  1. 第一列全为1,最后一列全为
    1)a[i]0[]=1
    2)for循环把最后一列变成1:a[i][i]=1
    3.其他元素遵循,这一行的数是上一行两数和:a[i][j]=a[i-1][j-1]+a[i-1][j]
#include <stdio.h>
void main(){int a[10][10],i,j;//第1列元素值为1 for(i=0;i<10;i++)a[i][0]=1;//对角线元素值为1for(i=0;i<10;i++)a[i][i]=1;//其它元素for(i=2;i<10;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];//输出杨辉三角for(i=0;i<10;i++){for(j=0;j<=i;j++)printf("%8d",a[i][j]);printf("\n");} 
}

3. 幻方问题

问题描述:幻方又称魔方阵,游戏规则是在一一个n*n的矩阵中填入1到n2的数字,使得每一行、每一列、每条对角线的累加和都相等。如图所示是一个3阶幻方,每一行、每一列每条对角线的累加和都等于15。
在这里插入图片描述
规律:
4. 1到2该如何挪动呢?

由1放在第一行中间开始填数,2在左边一行,2的下一个数字,在右边
可以这样设置:

  1. 左上角超出上边界,则在最下边对应的位置填入下一个数
  2. 左上角超出左边界,则在最右边对应的位置填入下一个数

在这里插入图片描述

int arr[100][100]={0};    //假设最多为100行、100列 printf("请输入1-100内的奇数:\n");   //只处理为奇数的方阵 int num;scanf("%d",&num);int i,j;i=0;j=num/2;   arr[i][j]=1;  //将第一个值存入中间位置 int iTemp,jTemp;  //用于暂存当前位置 for(int k=2;k<=num*num;k++){iTemp=i;jTemp=j;if(--i<0){  //判断当前位置是否超出上边界 i=num-1;}if(--j<0){  //判断当前位置是否超出左边界 j=num-1;}if(arr[i][j]>0){  //如果该位置已经有数,则在该位置下面添加数字 i=iTemp+1;if(i==num){i=0;}j=jTemp;;}arr[i][j]=k;}for(int m=0;m<num;m++){for(int n=0;n<num;n++){printf("%d\t",arr[m][n]);}printf("\n");}

总结:都是通过寻找规律来找出构造逻辑然后用循环来实现


http://www.ppmy.cn/ops/157884.html

相关文章

【OneAPI】通过网页预渲染让搜索引擎收录网页

API简介 网页预渲染&#xff0c;适用于动态网页以及单页面的SEO&#xff0c;支持网页缓存。 您无须更改代码即可让搜索引擎收录您的网页。只要将需要预渲染的页面转发的本接口即可。 如果您使用Nginx作为网页服务器&#xff0c;推荐使用以下配置&#xff1a; #您的网站locat…

【3.Git与Github的历史和区别】

目录 Git的历史和Github的区别本质和功能 Git的历史和Github的区别 Git是由Linux内核的创造者Linus Torvalds于2005年创建的。当时&#xff0c;Linux内核开源项目使用BitKeeper作为版本控制系统&#xff0c;但2005年BitKeeper的商业公司终止了与Linux社区的合作&#xff0c;收…

Python截图轻量化工具

一、兼容局限性 这是用Python做的截图工具&#xff0c;不过由于使用了ctypes调用了Windows的API, 同时访问了Windows中"C:/Windows/Cursors/"中的.cur光标样式文件, 这个工具只适用于Windows环境&#xff1b; 如果要提升其跨平台性的话&#xff0c;需要考虑替换cty…

掌握 PHP 单例模式:构建更高效的应用

在 PHP 应用开发中&#xff0c;资源的高效管理至关重要。单例模式是一种能够帮助我们实现这一目标的设计模式。本文将深入探讨单例模式的概念、工作原理以及在 PHP 项目中何时应该&#xff08;或不应该&#xff09;使用它。 什么是单例模式&#xff1f; 单例模式是一种设计模…

大语言模型实践——基于现有API的二次开发

基于现有的API平台做一些实用的AI小应用。 API服务商&#xff1a;阿里云百炼 云服务器&#xff1a;阿里云&#xff08;2核2GB&#xff09; 部署框架&#xff1a;gradio 调用框架&#xff1a;openai 语言&#xff1a;Python &#xff08;注&#xff1a;若搭建网站或API接口…

RabbitMQ 延迟队列

1.延迟队列插件安装(版本号要对其&#xff09; Releases rabbitmq/rabbitmq-delayed-message-exchange GitHub 下载的文件: rabbitmq_delayed_message_exchange-3.13.0.ez 直接复制到以下文件夹&#xff1a; \RabbitMQ Server\rabbitmq_server-3.13.7\plugins\ 执行命令…

《手札·数转篇》开源Odoo软件与SKF Observer API钢铁厂双向集成方案

一、项目背景 在钢铁厂的生产环境中&#xff0c;设备的稳定运行、质量控制以及数据采集是确保生产效率和产品质量的关键。开源Odoo软件提供了强大的维护模块、质量模块和数据采集&#xff08;数采&#xff09;模块&#xff0c;结合SKF Observer API&#xff0c;可以实现设备状态…

Spring基于文心一言API使用的大模型

有时做项目我们可能会遇到要在项目中对接AI大模型 本篇文章是对使用文心一言大模型的使用总结 前置任务 在百度智能云开放平台中注册成为开发者 百度智能云开放平台 进入百度智能云官网进行登录&#xff0c;点击立即体验 点击千帆大模型平台 向下滑动&#xff0c;进入到模型…