今日份算法总结

日常自律

1、分治算法

https://leetcode.cn/circle/article/zeM9YK/

k神的文章图片结合文字讲解,逻辑清晰易懂!

2、奇数阶矩阵

https://blog.csdn.net/m0_46078030/article/details/103881708
看了很多文章,还是这个比较欧克,感谢博主!

事情起源于帮大一的学弟解决问题,没想到最后一题翻了车,最后是用的全排列列出来的结果;
我记得还有人用了九个for解决的,So beautiful!但是忘记在哪里看的了,找蛮久找不到当时的笔记,也许是洛谷还是什么,忘了,放弃了!感觉自己好菜啊,啊啊啊!不行,我要变强!
在这里插入图片描述

#include<bits/stdc++.h>
/*
从1到9的连续9个整数,排成3*3矩阵阵列,要求每行三个数的和与每列三个数的和相等
且与两条对角线上三个数的和相等。请编写程序输出这个数组,要求用穷举法。
*/
using namespace std;

int main(){
	int a[3][3];
	int s[9]={1,2,3,4,5,6,7,8,9};
	int s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0;
	do{  
        a[0][0]=s[0]; a[0][1]=s[1]; a[0][2]=s[2];
		a[1][0]=s[3]; a[1][1]=s[4]; a[1][2]=s[5];
		a[2][0]=s[6]; a[2][1]=s[7]; a[2][2]=s[8];
		s1=(a[0][0]+a[0][1]+a[0][2]);
		s2=(a[1][0]+a[1][1]+a[1][2]);
		s3=(a[2][0]+a[2][1]+a[2][2]);//横三行 
		s4=(a[0][0]+a[1][0]+a[2][0]);
		s5=(a[0][1]+a[1][1]+a[2][1]);
		s6=(a[0][2]+a[1][2]+a[2][2]);//竖三行 
		s7=(a[0][0]+a[1][1]+a[2][2]);//左斜线 
		s8=(a[0][2]+a[1][1]+a[2][0]);//右斜线 
		if(s1==s2&&s1==s3&&s1==s4&&s1==s5&&s1==s6&&s1==s7&&s1==s8) {
			for(int i=0;i<3;i++){
				for(int j=0;j<3;j++)
					printf("%3d",a[i][j]);
				printf("\n");
			}
			printf("\n");
		} 
    }while(next_permutation(s,s+9));  
	return 0;
}

3、两个语法知识

全排列函数next_permutation

https://www.cnblogs.com/aiguona/p/7304945.html

懊恼,老是记不住函数全名,dev也不像idea那样能提醒,啊啊啊,我要记死你!!

二维数组初始化

https://blog.csdn.net/qq_35987777/article/details/105905452

一行代码搞定,巴适!

vector<vector<int>> matrix(M,vector<int>(N));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值