c 解数独(通用方法,适用于9×9 数独)

折腾了一周时间,终于搞定9×9数独通用方法

思路:1.生成每行空位的值,也就是1-9中除去非0的数。

2.用行,列,宫判断每行中每个空位的最小取值范围后再重新生成每行。

3.随机提取生成的9行,判断每列之和是否等于45。

4.如9列之和都等于45则数独找到。

刚试了一下,网上的9*9数独都可用此程序解出。经验证此程序对提示比较多的数独非常有效,对只有少量提示的数独运算量非常大,运算时间会很长。

对于提示很少的数独,要把生成的行数的下标改大,如1000。运算时间很长。

此程序的亮点是用struct表示空位的各种参数,以及生成各种二维,三维数组,以及各种循环判断。

灵活运用数组和struct,对于相同类型的数据用数组,如要存储不同类型的数据用struct.

c81ffa7dd951446dab2f104bfd79f551.png

 

程序:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>int main(void) {//判断len长的数组是否有相同元素int pd(int *i,int len) {           int n = 0;for (int a = 0; a < len; a++) {for (int b = a + 1; b <len ; b++) {if (i[a] == i[b]) {n = -1;goto aa;}}}n = 1;aa:return n;}//9位int数组中每位非空元素的值与下标int cxf0(int *i,int len,int (*o)[2]){int n=0;for(int a=0;a<len;a++){if(i[a]!=0){o[n][0]=a;o[n][1]=i[a];n++;}}return n;}//9位int 数组中所有空 元素取值范围int cxfw(int *i,int *o){int ls[]={1,2,3,4,5,6,7,8,9};for(int a=0;a<9;a++){if(i[a]!=0){ls[i[a]-1]=0;}}int n=0;for(int a=0;a<9;a++){if(ls[a]!=0){o[n]=ls[a];n++;}}return n;}//提取三个int 数组中相同的元素(也就是每位空元素的可能取值范围)int xt(int *i1,int *i2,int *i3,int len1,int len2,int len3,int *o){int n=0;int ls[9]={};for(int a=0;a<len1;a++){for(int b=0;b<len2;b++){if(i1[a]==i2[b]){ls[n]=i1[a];	n++;}}}int x=0;for(int a=0;a<n;a++){for(int b=0;b<len3;b++){if(ls[a]==i3[b]){o[x]=ls[a];	x++;}}}return x;}int s[9][9] = {{5, 3, 0,   0, 7, 0,   0, 0, 0},{6, 0, 0,   1, 9, 5,   0, 0, 0},{0, 9, 8,   0, 0, 0,   0, 6, 0},{8, 0, 0,   0, 6, 0,   0, 0, 3},{4, 0, 0,   8, 0, 3,   0, 0, 1},{7, 0, 0,   0, 2, 0,   0, 0, 6},{0, 6, 0,   0, 0, 0,   2, 8, 0},{0, 0, 0,   4, 1, 9,   0, 0, 5},{0, 0, 0,   0, 8, 0,   0, 7, 9}};int ls[9]={};//---------------------------------//每宫空元素的可能值int g0[9]={};memset(ls,0,36);ls[0]=s[0][0],ls[1]=s[0][1],ls[2]=s[0][2],ls[3]=s[1][0],ls[4]=s[1][1],ls[5]=s[1][2],ls[6]=s[2][0],ls[7]=s[2][1],ls[8]=s[2][2];int ng0=cxfw(ls,g0);int g1[9]={};memset(ls,0,36);ls[0]=s[0][3],ls[1]=s[0][4],ls[2]=s[0][5],ls[3]=s[1][3],ls[4]=s[1][4],ls[5]=s[1][5],ls[6]=s[2][3],ls[7]=s[2][4],ls[8]=s[2][5];int ng1=cxfw(ls,g1);int g2[9]={};memset(ls,0,36);ls[0]=s[0][6],ls[1]=s[0][7],ls[2]=s[0][8],ls[3]=s[1][6],ls[4]=s[1][7],ls[5]=s[1][8],ls[6]=s[2][6],ls[7]=s[2][7],ls[8]=s[2][8];int ng2=cxfw(ls,g2);int g3[9]={};memset(ls,0,36);ls[0]=s[3][0],ls[1]=s[3][1],ls[2]=s[3][2],ls[3]=s[4][0],ls[4]=s[4][1],ls[5]=s[4][2],ls[6]=s[5][0],ls[7]=s[5][1],ls[8]=s[5][2];int ng3=cxfw(ls,g3);int g4[9]={};memset(ls,0,36);ls[0]=s[3][3],ls[1]=s[3][4],ls[2]=s[3][5],ls[3]=s[4][3],ls[4]=s[4][4],ls[5]=s[4][5],ls[6]=s[5][3],ls[7]=s[5][4],ls[8]=s[5][5];int ng4=cxfw(ls,g4);int g5[9]={};memset(ls,0,36);ls[0]=s[3][6],ls[1]=s[3][7],ls[2]=s[3][8],ls[3]=s[4][6],ls[4]=s[4][7],ls[5]=s[4][8],ls[6]=s[5][6],ls[7]=s[5][7],ls[8]=s[5][8];int ng5=cxfw(ls,g5);int g6[9]={};memset(ls,0,36);ls[0]=s[6][0],ls[1]=s[6][1],ls[2]=s[6][2],ls[3]=s[7][0],ls[4]=s[7][1],ls[5]=s[7][2],ls[6]=s[8][0],ls[7]=s[8][1],ls[8]=s[8][2];int ng6=cxfw(ls,g6);int g7[9]={};memset(ls,0,36);ls[0]=s[6][3],ls[1]=s[6][4],ls[2]=s[6][5],ls[3]=s[7][3],ls[4]=s[7][4],ls[5]=s[7][5],ls[6]=s[8][3],ls[7]=s[8][4],ls[8]=s[8][5];int ng7=cxfw(ls,g7);int g8[9]={};memset(ls,0,36);ls[0]=s[6][6],ls[1]=s[6][7],ls[2]=s[6][8],ls[3]=s[7][6],ls[4]=s[7][7],ls[5]=s[7][8],ls[6]=s[8][6],ls[7]=s[8][7],ls[8]=s[8][8];int ng8=cxfw(ls,g8);int zg[9][9]={};memcpy(&(zg[0][0]),g0,36);memcpy(&(zg[1][0]),g1,36);memcpy(&(zg[2][0]),g2,36);memcpy(&(zg[3][0]),g3,36);memcpy(&(zg[4][0]),g4,36);memcpy(&(zg[5][0]),g5,36);memcpy(&(zg[6][0]),g6,36);memcpy(&(zg[7][0]),g7,36);memcpy(&(zg[8][0]),g8,36);int zng[9]={ng0,ng1,ng2,ng3,ng4,ng5,ng6,ng7,ng8};//--------------------------------------------------------//数独9行中每行的空元素的可能值int h0[9]={};             //第一行空位每位的可能值memcpy(ls,&(s[0][0]),36);int nh0=cxfw(ls,h0);        //空位个数int h1[9]={};             //第二行空位每位的可能值memset(ls,0,36);memcpy(ls,&(s[1][0]),36);int nh1=cxfw(ls,h1);        //空位个数int h2[9]={};             memset(ls,0,36);memcpy(ls,&(s[2][0]),36);int nh2=cxfw(ls,h2);        int h3[9]={};            memset(ls,0,36);memcpy(ls,&(s[3][0]),36);int nh3=cxfw(ls,h3);        int h4[9]={};            memset(ls,0,36);memcpy(ls,&(s[4][0]),36);int nh4=cxfw(ls,h4);int h5[9]={};            memset(ls,0,36);memcpy(ls,&(s[5][0]),36);int nh5=cxfw(ls,h5);int h6[9]={};            memset(ls,0,36);memcpy(ls,&(s[6][0]),36);int nh6=cxfw(ls,h6);int h7[9]={};            memset(ls,0,36);memcpy(ls,&(s[7][0]),36);int nh7=cxfw(ls,h7);int h8[9]={};            memset(ls,0,36);memcpy(ls,&(s[8][0]),36);int nh8=cxfw(ls,h8);int zh[9][9]={};memcpy(&(zh[0][0]),h0,36);memcpy(&(zh[1][0]),h1,36);memcpy(&(zh[2][0]),h2,36);memcpy(&(zh[3][0]),h3,36);memcpy(&(zh[4][0]),h4,36);memcpy(&(zh[5][0]),h5,36);memcpy(&(zh[6][0]),h6,36);memcpy(&(zh[7][0]),h7,36);memcpy(&(zh[8][0]),h8,36);int znh[9]={nh0,nh1,nh2,nh3,nh4,nh5,nh6,nh7,nh8};//每列空元素的可能值int s0[9]={};memset(ls,0,36);for(int a=0;a<9;a++){ls[a]=s[a][0];}int ns0=cxfw(ls,s0);int s1[9]={};memset(ls,0,36);for(int a=0;a<9;a++){ls[a]=s[a][1];}int ns1=cxfw(ls,s1);int s2[9]={};memset(ls,0,36);for(int a=0;a<9;a++){ls[a]=s[a][2];}int ns2=cxfw(ls,s2);int s3[9]={};memset(ls,0,36);for(int a=0;a<9;a++){ls[a]=s[a][3];}int ns3=cxfw(ls,s3);int s4[9]={};memset(ls,0,36);for(int a=0;a<9;a++){ls[a]=s[a][4];}int ns4=cxfw(ls,s4);int s5[9]={};memset(ls,0,36);for(int a=0;a<9;a++){ls[a]=s[a][5];}int ns5=cxfw(ls,s5);int s6[9]={};memset(ls,0,36);for(int a=0;a<9;a++){ls[a]=s[a][6];}int ns6=cxfw(ls,s6);int s7[9]={};memset(ls,0,36);for(int a=0;a<9;a++){ls[a]=s[a][7];}int ns7=cxfw(ls,s7);int s8[9]={};memset(ls,0,36);for(int a=0;a<9;a++){ls[a]=s[a][8];}int ns8=cxfw(ls,s8);int zs[9][9]={};memcpy(&(zs[0][0]),s0,36);memcpy(&(zs[1][0]),s1,36);memcpy(&(zs[2][0]),s2,36);memcpy(&(zs[3][0]),s3,36);memcpy(&(zs[4][0]),s4,36);memcpy(&(zs[5][0]),s5,36);memcpy(&(zs[6][0]),s6,36);memcpy(&(zs[7][0]),s7,36);memcpy(&(zs[8][0]),s8,36);int zns[9]={ns0,ns1,ns2,ns3,ns4,ns5,ns6,ns7,ns8};//-------------------------------------------------struct SD{int f0;int xb;int len;int fw[9];	};typedef struct SD sd;sd ss[9][9]={};              //9×9 数独81位的可能范围最小取值(已行,列,宫三方判定)for(int a=0;a<9;a++){        // 循环9行for(int b=0;b<9;b++){    //循环9列if(s[a][b]!=0){        //非空位ss[a][b].f0=1;ss[a][b].xb=b;ss[a][b].len=1;ss[a][b].fw[0]=s[a][b];}                                //下面是处理空位if((s[a][b]==0)&&(a<3)&&(b<3)){     //宫0 9位中的空位ss[a][b].f0=0;ss[a][b].xb=b;int lsh[9]={};memcpy(lsh,&(zh[a][0]),36);int lshn=znh[a];int lss[9]={};memcpy(lss,&(zs[b][0]),36);int lssn=zns[b];int o[9]={};ss[a][b].len=xt(lsh,lss,g0,lshn,lssn,ng0,o);memcpy(&(ss[a][b].fw[0]),o,ss[a][b].len*4);}if((s[a][b]==0)&&(a<3)&&(b<6)&&(b>=3)){    //宫1的9位中的空位ss[a][b].f0=0;ss[a][b].xb=b;int lsh[9]={};memcpy(lsh,&(zh[a][0]),36);int lshn=znh[a];int lss[9]={};memcpy(lss,&(zs[b][0]),36);int lssn=zns[b];int o[9]={};ss[a][b].len=xt(lsh,lss,g1,lshn,lssn,ng1,o);memcpy(&(ss[a][b].fw),o,ss[a][b].len*4);}if((s[a][b]==0)&&(a<3)&&(b>=6)){        //宫2的9位中的空位ss[a][b].f0=0;ss[a][b].xb=b;int lsh[9]={};memcpy(lsh,&(zh[a][0]),36);int lshn=znh[a];int lss[9]={};memcpy(lss,&(zs[b][0]),36);int lssn=zns[b];int o[9]={};ss[a][b].len=xt(lsh,lss,g2,lshn,lssn,ng2,o);memcpy(&(ss[a][b].fw),o,ss[a][b].len*4);	}if((s[a][b]==0)&&(a>=3)&&(a<6)&&(b<3)){        //宫3的9位中的空位--------------ss[a][b].f0=0;ss[a][b].xb=b;int lsh[9]={};memcpy(lsh,&(zh[a][0]),36);int lshn=znh[a];int lss[9]={};memcpy(lss,&(zs[b][0]),36);int lssn=zns[b];int o[9]={};ss[a][b].len=xt(lsh,lss,g3,lshn,lssn,ng3,o);memcpy(&(ss[a][b].fw),o,ss[a][b].len*4);	}if((s[a][b]==0)&&(a>=3)&&(a<6)&&(b>=3)&&(b<6)){        //宫4的9位中的空位ss[a][b].f0=0;ss[a][b].xb=b;int lsh[9]={};memcpy(lsh,&(zh[a][0]),36);int lshn=znh[a];int lss[9]={};memcpy(lss,&(zs[b][0]),36);int lssn=zns[b];int o[9]={};ss[a][b].len=xt(lsh,lss,g4,lshn,lssn,ng4,o);memcpy(&(ss[a][b].fw),o,ss[a][b].len*4);	}if((s[a][b]==0)&&(a>=3)&&(a<6)&&(b>=6)){        //宫5的9位中的空位ss[a][b].f0=0;ss[a][b].xb=b;int lsh[9]={};memcpy(lsh,&(zh[a][0]),36);int lshn=znh[a];int lss[9]={};memcpy(lss,&(zs[b][0]),36);int lssn=zns[b];int o[9]={};ss[a][b].len=xt(lsh,lss,g5,lshn,lssn,ng5,o);memcpy(&(ss[a][b].fw),o,ss[a][b].len*4);	}if((s[a][b]==0)&&(a>=6)&&(b<3)){        //宫6的9位中的空位ss[a][b].f0=0;ss[a][b].xb=b;int lsh[9]={};memcpy(lsh,&(zh[a][0]),36);int lshn=znh[a];int lss[9]={};memcpy(lss,&(zs[b][0]),36);int lssn=zns[b];int o[9]={};ss[a][b].len=xt(lsh,lss,g6,lshn,lssn,ng6,o);memcpy(&(ss[a][b].fw),o,ss[a][b].len*4);	}if((s[a][b]==0)&&(a>=6)&&(b>=3)&&(b<6)){        //宫7的9位中的空位ss[a][b].f0=0;ss[a][b].xb=b;int lsh[9]={};memcpy(lsh,&(zh[a][0]),36);int lshn=znh[a];int lss[9]={};memcpy(lss,&(zs[b][0]),36);int lssn=zns[b];int o[9]={};ss[a][b].len=xt(lsh,lss,g7,lshn,lssn,ng7,o);memcpy(&(ss[a][b].fw),o,ss[a][b].len*4);	}if((s[a][b]==0)&&(a>=6)&&(b>=6)){        //宫8的9位中的空位ss[a][b].f0=0;ss[a][b].xb=b;int lsh[9]={};memcpy(lsh,&(zh[a][0]),36);int lshn=znh[a];int lss[9]={};memcpy(lss,&(zs[b][0]),36);int lssn=zns[b];int o[9]={};ss[a][b].len=xt(lsh,lss,g8,lshn,lssn,ng8,o);memcpy(&(ss[a][b].fw),o,ss[a][b].len*4);	}}}
//-----数独每行的可能值-------------------------------------------------------------------------------------------int zo[9][100][9]={};        //9行,每行可能的范围最小的排列,第一个9代表9行序号 100代表每行最多有100种可能,最后的9代表每行的9位数int nn[9]={};for(int a=0;a<9;a++){          //9行循环int nx=0;for(int a0=0;a0<ss[a][0].len;a0++){      //每行的9列循环for(int a1=0;a1<ss[a][1].len;a1++){for(int a2=0;a2<ss[a][2].len;a2++){for(int a3=0;a3<ss[a][3].len;a3++){for(int a4=0;a4<ss[a][4].len;a4++){for(int a5=0;a5<ss[a][5].len;a5++){for(int a6=0;a6<ss[a][6].len;a6++){for(int a7=0;a7<ss[a][7].len;a7++){for(int a8=0;a8<ss[a][8].len;a8++){int z[]={ss[a][0].fw[a0],ss[a][1].fw[a1],ss[a][2].fw[a2],ss[a][3].fw[a3],ss[a][4].fw[a4],ss[a][5].fw[a5],ss[a][6].fw[a6],ss[a][7].fw[a7],ss[a][8].fw[a8]};if(pd(z,9)>0){memcpy(&(zo[a][nx][0]),z,36);nx++;}}}}}}}}}}nn[a]=nx;}/*	   for(int b=0;b<9;b++){printf("%d ;",zo[7][0][b]);}*/   int wzo[9][9]={};//int zo[9][100][9]={};for(int q0=0;q0<nn[0];q0++){for(int q1=0;q1<nn[1];q1++){for(int q2=0;q2<nn[2];q2++){for(int q3=0;q3<nn[3];q3++){for(int q4=0;q4<nn[4];q4++){for(int q5=0;q5<nn[5];q5++){for(int q6=0;q6<nn[6];q6++){for(int q7=0;q7<nn[7];q7++){for(int q8=0;q8<nn[8];q8++){int s0[9],s1[9],s2[9],s3[9],s4[9],s5[9],s6[9],s7[9],s8[9];memcpy(s0,&(zo[0][q0][0]),36);memcpy(s1,&(zo[1][q1][0]),36);memcpy(s2,&(zo[2][q2][0]),36);memcpy(s3,&(zo[3][q3][0]),36);memcpy(s4,&(zo[4][q4][0]),36);memcpy(s5,&(zo[5][q5][0]),36);memcpy(s6,&(zo[6][q6][0]),36);memcpy(s7,&(zo[7][q7][0]),36);memcpy(s8,&(zo[8][q8][0]),36);if((    s0[0]+s1[0]+s2[0]+s3[0]+s4[0]+s5[0]+s6[0]+s7[0]+s8[0]==45)&&(s0[1]+s1[1]+s2[1]+s3[1]+s4[1]+s5[1]+s6[1]+s7[1]+s8[1]==45)&&(s0[2]+s1[2]+s2[2]+s3[2]+s4[2]+s5[2]+s6[2]+s7[2]+s8[2]==45)&&(s0[3]+s1[3]+s2[3]+s3[3]+s4[3]+s5[3]+s6[3]+s7[3]+s8[3]==45)&&(s0[4]+s1[4]+s2[4]+s3[4]+s4[4]+s5[4]+s6[4]+s7[4]+s8[4]==45)&&(s0[5]+s1[5]+s2[5]+s3[5]+s4[5]+s5[5]+s6[5]+s7[5]+s8[5]==45)&&(s0[6]+s1[6]+s2[6]+s3[6]+s4[6]+s5[6]+s6[6]+s7[6]+s8[6]==45)&&(s0[7]+s1[7]+s2[7]+s3[7]+s4[7]+s5[7]+s6[7]+s7[7]+s8[7]==45)&&(s0[8]+s1[8]+s2[8]+s3[8]+s4[8]+s5[8]+s6[8]+s7[8]+s8[8]==45)){memcpy(&(wzo[0][0]),s0,36);memcpy(&(wzo[1][0]),s1,36);memcpy(&(wzo[2][0]),s2,36);memcpy(&(wzo[3][0]),s3,36);memcpy(&(wzo[4][0]),s4,36);memcpy(&(wzo[5][0]),s5,36);memcpy(&(wzo[6][0]),s6,36);memcpy(&(wzo[7][0]),s7,36);memcpy(&(wzo[8][0]),s8,36);}}}}}}}}}}for(int a=0;a<9;a++){for(int b=0;b<9;b++){printf("%d ,",wzo[a][b]);}puts("");}  return 0;}

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/308369.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构与算法】:二叉树经典OJ

目录 1. 二叉树的前序遍历 (中&#xff0c;后序类似)2. 二叉树的最大深度3. 平衡二叉树4. 二叉树遍历 1. 二叉树的前序遍历 (中&#xff0c;后序类似) 这道题的意思是对二叉树进行前序遍历&#xff0c;把每个结点的值都存入一个数组中&#xff0c;并且返回这个数组。 思路&…

解决 IDEA每次打开新的项目都要重新设置maven问题

目录 一、当前项目设置maven 如下图&#xff1a; 二、设置打开的新项目的maven 如下图&#xff1a;​ 一、当前项目设置maven 对于当前项目我们都知道设置maven的配置要在 File -- Settings -- Build -- Maven 中设置 如下图&#xff1a; 二、设置打开的新项目的maven F…

150个 HTML5 网站模版 量大慢选

HTML5 网站模版 No.1 HTML5 网站模版 No.1

linux下安装nacos2.2.0

1、获取下载地址并下载 1.1、打开nacos官网 1.2、找到对应版本&#xff0c;点进去 ## 1.3、复制地址 1.4下载 # 进入要安装的目录&#xff0c;cd /usr/local/src # 执行wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz2、 安装…

RTSP/Onvif安防视频EasyNVR平台 vs.多协议接入视频汇聚EasyCVR平台:设备分组的区别

EasyNVR安防视频云平台是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif协议接入的安防监控流媒体视频云平台。平台具备视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频能力&#xff0c;能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、W…

架构设计参考项目系列主题:新零售SaaS架构:客户管理系统架构设计

什么是客户管理系统? 客户管理系统,也称为CRM(Customer Relationship Management),主要目标是建立、发展和维护好客户关系。 CRM系统围绕客户全生命周期的管理,吸引和留存客户,实现缩短销售周期、降低销售成本、增加销售收入的目的,从而提高企业的盈利能力和竞争力。 …

【ARM 裸机】汇编 led 驱动之原理分析

1、我们为什么要学习汇编&#xff1f;&#xff1f;&#xff1f; 之前我们或许接触过 STM32 以及其他的 32 位的 MCU ,都是基于 C 语言环境进行编程的&#xff0c;都没怎么注意汇编&#xff0c;是因为 ST 公司早已将启动文件写好了&#xff0c;新建一个 STM32 工程的时候&#…

nexus搭建maven与docker镜像的私有仓库

引言 通过nexus搭建maven与docker镜像的私有仓库,实现jar包与镜像动态更新、共享、存储。 一、nexus部署 通过docker-compose部署nexus name: java services:#############################环境#############################env-nexus:restart: always## 3.58.1image: so…

Python十大最佳实践:高效Python编程的十个关键方法

在当今的软件开发世界中&#xff0c;Python是一种极其重要且广泛使用的编程语言。以下是Python编程的十大最佳实践&#xff0c;这些实践将帮助你提升编程效率&#xff0c;优化代码质量&#xff0c;以及更好地应用Python的强大功能。 1.理解Pythonic的方式 “Pythonic”是指遵循…

普乐蛙VR航天体验馆设备VR太空飞船VR元宇宙展厅

三天小长假就要来啦&#xff01;五一假期也即将到来。老板们想捉住人流量这个财富密码吗&#xff1f;那快快行动起来&#xff01;开启VR体验项目&#xff0c;假期赚翻天&#xff01;小编亲测&#xff01;&#xff01;这款设备刺激好玩&#xff0c;想必会吸引各位家长小孩、学生…

matlab使用教程(43)—二维曲线图绘制的基本方法

这个博客创建一个简单的曲线图并修改横纵坐标。通过更改线条颜色、线型和添加标记来自定义线图的外观。 1.创建曲线图 使用 plot 函数创建二维曲线图。例如&#xff0c;绘制从 0 到 2 π 之间的正弦函数值&#xff0c;并修改横纵坐标&#xff0c;添加图形标题。 x linspace…

ES6 关于Class类的继承 extends(2024-04-10)

1、简介 类Class 可以通过extends关键字实现继承&#xff0c;让子类继承父类的属性和方法。extends 的写法比 ES5 的原型链继承&#xff0c;要清晰和方便很多。 class Foo {constructor(x, y) {this.x x;this.y y;console.log(父类构造函数)}toString() {return ( this.x …

【算法】分治-快排

个人主页 &#xff1a; zxctscl 如有转载请先通知 题目 前言1. 75. 颜色分类1.1 分析1.2 代码 2. 912. 排序数组2.1 分析2.2 代码 3. 215. 数组中的第K个最大元素3.1 分析3.2 代码 4. LCR 159. 库存管理 III4.1 分析4.2 代码 前言 分治就是分而治之 1. 75. 颜色分类 1.1 分析…

GitHub repository - Pulse - Contributors - Network

GitHub repository - Pulse - Contributors - Network 1. Pulse2. Contributors3. NetworkReferences 1. Pulse 显示该仓库最近的活动信息。该仓库中的软件是无人问津&#xff0c;还是在火热地开发之中&#xff0c;从这里可以一目了然。 2. Contributors 显示对该仓库进行过…

设备树的概念、设备树如何变成device、与driver的匹配

在平台总线驱动模型中资源和驱动已经从逻辑上和代码组织上进行了分离&#xff0c;但每次调整资源还是会涉及到内核&#xff0c;所以现在更加流行的是设备树方式。设备树的好处是通过独立于内核存在&#xff0c;这样如果设备上外设功能启用与否以及位置变动的话很多时候不用修改…

深入理解计算机网络分层结构

一、 为什么要分层&#xff1f; 计算机网络分层的主要目的是将复杂的网络通信过程分解为多个相互独立的层次&#xff0c;每个层次负责特定的功能。这样做有以下几个好处&#xff1a; 模块化设计&#xff1a;每个层次都有清晰定义的功能和接口&#xff0c;使得网络系统更易于设…

修复 Windows 上的 PyTorch 1.1 github 模型加载权限错误

问题: 在 Windows 计算机上执行示例 github 模型加载时,生成了 master.zip 文件的权限错误(请参阅下面的错误堆栈跟踪)。 错误堆栈跟踪: 在[4]中:en2de = torch.hub.load(pytorch/fairseq, transformer.wmt16.en-de, tokenizer=moses, bpe=subword_nmt) 下载:“https://…

【Java基础题型】矩阵的对角线求和

一、题目-矩阵 求一个33矩阵对角线元素之和。 输入格式 矩阵 输出格式 主对角线 副对角线 元素和 样例输入 1 2 3 1 1 1 3 2 1 样例输出 3 7 二、参考的知识 这里给大家送点英语单词&#xff0c;记得学习&#xff1a; p r i m a r y. adj.主要的&#xff1b;初…

谈谈我的软考高级考证之路(系统架构设计师篇)

系统架构设计师备考资料请移步 2023年软考高级系统架构设计师视频教程&#xff0c;推荐下载&#xff01;获取。 备考总体策略 • 总体策略&#xff1a;刷视频记笔记刷真题 • 备考时间&#xff1a;建议报完名之后&#xff0c;开始备考&#xff0c;大致2-3个月&#xff08;基础…

CNN-Transformer时间序列预测

部分代码&#xff1a; # CNN-Transformer class CNNTransformerEncoder(nn.Module):def __init__(self, input_features, transformer_encoder_heads,embedding_features, cnn_kernel_size, dim_feedforward_enc, n_encoder_layer):super(CNNTransformerEncoder, self).__init…