当前位置: 首页 > news >正文

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;}

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

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

折腾了一周时间&#xff0c;终于搞定99数独通用方法 思路&#xff1a;1.生成每行空位的值&#xff0c;也就是1-9中除去非0的数。 2.用行&#xff0c;列&#xff0c;宫判断每行中每个空位的最小取值范围后再重新生成每行。 3.随机提取生成的9行&#xff0c;判断每列之和是否等…...

一篇文章深入学习Java的AQS(AbstractQueuedSynchronizer)

深入理解AQS的设计和工作机制 Oracle官方文档中的AbstractQueuedSynchronizer部分讲解 AbstractQueuedSynchronizer&#xff08;简称AQS&#xff09;是Java并发包中的一个基础框架&#xff0c;它为实现依赖单个原子变量来表示状态的同步器提供了可靠的基础。这个框架被广泛用…...

Linux sed

文章目录 1. 基本功能2.sed替换ssed配合grep和管道操作符的例子 3.sed中的删除和添加3.1 d删除3.2 a i添加添加多行 4.sed行替换替换包含某字符的行 5.单字符替换 y6. p打印命令打印含有目标字符的行sed中包含多个指令&#xff0c;使用{} 7.sed w 写入文件8.sed r 读取文件9.se…...

【MySQL】MySQL在Centos 7环境安装

目录 准备工作 第一步&#xff1a;卸载不要的环境 第二步&#xff1a;下载官方的mysql 第三步 上传到Linux中 第四步 安装 正式安装 启动 ​编辑 登录 准备工作 第一步&#xff1a;卸载不要的环境 使用root进行安装 如果是普通用户&#xff0c;使用 su - 命令&#…...

【CSS】一篇文章讲清楚screen、window和html元素的位置:top、left、width、height

一个Web网页从内到外的顺序是&#xff1a; 元素div,ul,table... → 页面body → 浏览器window → 屏幕screen 分类详情屏幕screen srceen.width - 屏幕的宽度 screen.height - 屏幕的高度&#xff08;屏幕未缩放时&#xff0c;表示屏幕分辨率&#xff09; screen.availLeft …...

铸造大型基础平板的结构应该怎样设计

设计大型基础平板的结构时&#xff0c;需要考虑以下几个方面&#xff1a; 地质条件&#xff1a;首先要了解工程所在地的地质条件&#xff0c;包括土质、地下水位、地震状况等。根据地质条件来选择合适的基础类型&#xff0c;如浅基、深基或地下连续墙等。 荷载分析&#xff1a…...

医院预约系统微信小程序APP前后端

医院预约系统具体功能介绍&#xff1a;展示信息、可以注册和登录&#xff0c; 预约&#xff08;包含各个科室的预约&#xff0c;可以预约每个各个医生&#xff09;&#xff0c;就诊引导包含预约的具体信息&#xff0c;包含就诊时间、就诊科室、就诊医生以及就诊人信息、和支付状…...

springboot数字化智慧城市管理系统源码

目录 ​系统开发环境 系统功能模块 系统特点 1、智慧城管移动端 2、案件受理 3、AI视频智识别分析 系统应用价值 1、提升案件办理效率 2、提升监管效能 3、提升行政执法水平 4、推进行政执法创新 智慧城管综合执法办案系统功能 现场移动执法 一般程序案件的网上办…...

【鸿蒙开发】第二十一章 Media媒体服务(一)

1 简介 Media Kit&#xff08;媒体服务&#xff09;提供了AVPlayer和AVRecorder用于播放、录制音视频。 在Media Kit的开发指导中&#xff0c;将介绍各种涉及音频、视频播放或录制功能场景的开发方式&#xff0c;指导开发者如何使用系统提供的音视频API实现对应功能。比如使用…...

【QT教程】QT6 Web应用实战

QT6 Web应用实战 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费…...

(我的创作纪念日)[MySQL]数据库原理7——喵喵期末不挂科

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;大大会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…...

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

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

基于torch的图像识别训练策略与常用模块

数据预处理部分&#xff1a; 数据增强&#xff1a;torchvision中transforms模块自带功能&#xff0c;比较实用数据预处理&#xff1a;torchvision中transforms也帮我们实现好了&#xff0c;直接调用即可DataLoader模块直接读取batch数据 网络模块设置&#xff1a; 加载预训练…...

微信小程序制作圆形进度条

微信小程序制作圆形进度条 1. 建立文件夹 选择一个目录建立一个文件夹&#xff0c;比如 mycircle 吧&#xff0c;另外把对应 page 的相关文件都建立出来&#xff0c;包括 js&#xff0c;json&#xff0c;wxml 和 wxcc。 2. 开启元件属性 在 mycircle.json中开启 component 属…...

大模型(Large Models):探索人工智能领域的新边界

&#x1f31f;文章目录 &#x1f31f;大模型的定义与特点&#x1f31f;模型架构&#x1f31f;大模型的训练策略&#x1f31f;大模型的优化方法&#x1f31f;大模型的应用案例 随着人工智能技术的飞速发展&#xff0c;大模型&#xff08;Large Models&#xff09;成为了引领深度…...

缓存相关知识总结

一、缓存的作用和分类 缓存可以减少数据库的访问压力&#xff0c;提升整个网站的数据访问速度&#xff0c;改善数据库的写入性能。缓存可以分为两种&#xff1a; 缓存在应用服务器上的本地缓存&#xff1a;访问速度快&#xff0c;但受应用服务器内存限制 缓存在专门的分布式缓存…...

Mapmost Alpha:开启三维城市场景创作新纪元

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

【大模型完全入门手册】——引言

博主作为一名大模型开发算法工程师,很希望能够将所学到的以及实践中感悟到的内容梳理成为书籍。作为先导,以专栏的形式先整理内容,后续进行不断更新完善。希望能够构建起从理论到实践的全流程体系。 助力更多的人了解大模型,接触大模型,一起感受AI的魅力! 在当今人工智能…...

在 Vue 3 中使用 Axios 发送 POST 请求

在 Vue 3 中使用 Axios 发送 POST 请求需要首先安装 Axios&#xff0c;然后在 Vue 组件或 Vuex 中使用它。以下是一个简单的安装和使用案例&#xff1a; 安装 Axios 你可以使用 npm 或 yarn 来安装 Axios&#xff1a; npm install axios # 或者 yarn add axios 使用 Axios…...

【LeetCode刷题记录】189. 轮转数组

189 轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: …...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...