c 解数独(通用方法,适用于9×9 数独)
折腾了一周时间,终于搞定9×9数独通用方法
思路:1.生成每行空位的值,也就是1-9中除去非0的数。
2.用行,列,宫判断每行中每个空位的最小取值范围后再重新生成每行。
3.随机提取生成的9行,判断每列之和是否等于45。
4.如9列之和都等于45则数独找到。
刚试了一下,网上的9*9数独都可用此程序解出。经验证此程序对提示比较多的数独非常有效,对只有少量提示的数独运算量非常大,运算时间会很长。
对于提示很少的数独,要把生成的行数的下标改大,如1000。运算时间很长。
此程序的亮点是用struct表示空位的各种参数,以及生成各种二维,三维数组,以及各种循环判断。
灵活运用数组和struct,对于相同类型的数据用数组,如要存储不同类型的数据用struct.

程序:
#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 数独)
折腾了一周时间,终于搞定99数独通用方法 思路:1.生成每行空位的值,也就是1-9中除去非0的数。 2.用行,列,宫判断每行中每个空位的最小取值范围后再重新生成每行。 3.随机提取生成的9行,判断每列之和是否等…...
一篇文章深入学习Java的AQS(AbstractQueuedSynchronizer)
深入理解AQS的设计和工作机制 Oracle官方文档中的AbstractQueuedSynchronizer部分讲解 AbstractQueuedSynchronizer(简称AQS)是Java并发包中的一个基础框架,它为实现依赖单个原子变量来表示状态的同步器提供了可靠的基础。这个框架被广泛用…...
Linux sed
文章目录 1. 基本功能2.sed替换ssed配合grep和管道操作符的例子 3.sed中的删除和添加3.1 d删除3.2 a i添加添加多行 4.sed行替换替换包含某字符的行 5.单字符替换 y6. p打印命令打印含有目标字符的行sed中包含多个指令,使用{} 7.sed w 写入文件8.sed r 读取文件9.se…...
【MySQL】MySQL在Centos 7环境安装
目录 准备工作 第一步:卸载不要的环境 第二步:下载官方的mysql 第三步 上传到Linux中 第四步 安装 正式安装 启动 编辑 登录 准备工作 第一步:卸载不要的环境 使用root进行安装 如果是普通用户,使用 su - 命令&#…...
【CSS】一篇文章讲清楚screen、window和html元素的位置:top、left、width、height
一个Web网页从内到外的顺序是: 元素div,ul,table... → 页面body → 浏览器window → 屏幕screen 分类详情屏幕screen srceen.width - 屏幕的宽度 screen.height - 屏幕的高度(屏幕未缩放时,表示屏幕分辨率) screen.availLeft …...
铸造大型基础平板的结构应该怎样设计
设计大型基础平板的结构时,需要考虑以下几个方面: 地质条件:首先要了解工程所在地的地质条件,包括土质、地下水位、地震状况等。根据地质条件来选择合适的基础类型,如浅基、深基或地下连续墙等。 荷载分析:…...
医院预约系统微信小程序APP前后端
医院预约系统具体功能介绍:展示信息、可以注册和登录, 预约(包含各个科室的预约,可以预约每个各个医生),就诊引导包含预约的具体信息,包含就诊时间、就诊科室、就诊医生以及就诊人信息、和支付状…...
springboot数字化智慧城市管理系统源码
目录 系统开发环境 系统功能模块 系统特点 1、智慧城管移动端 2、案件受理 3、AI视频智识别分析 系统应用价值 1、提升案件办理效率 2、提升监管效能 3、提升行政执法水平 4、推进行政执法创新 智慧城管综合执法办案系统功能 现场移动执法 一般程序案件的网上办…...
【鸿蒙开发】第二十一章 Media媒体服务(一)
1 简介 Media Kit(媒体服务)提供了AVPlayer和AVRecorder用于播放、录制音视频。 在Media Kit的开发指导中,将介绍各种涉及音频、视频播放或录制功能场景的开发方式,指导开发者如何使用系统提供的音视频API实现对应功能。比如使用…...
【QT教程】QT6 Web应用实战
QT6 Web应用实战 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费…...
(我的创作纪念日)[MySQL]数据库原理7——喵喵期末不挂科
希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…...
普乐蛙VR航天体验馆设备VR太空飞船VR元宇宙展厅
三天小长假就要来啦!五一假期也即将到来。老板们想捉住人流量这个财富密码吗?那快快行动起来!开启VR体验项目,假期赚翻天!小编亲测!!这款设备刺激好玩,想必会吸引各位家长小孩、学生…...
基于torch的图像识别训练策略与常用模块
数据预处理部分: 数据增强:torchvision中transforms模块自带功能,比较实用数据预处理:torchvision中transforms也帮我们实现好了,直接调用即可DataLoader模块直接读取batch数据 网络模块设置: 加载预训练…...
微信小程序制作圆形进度条
微信小程序制作圆形进度条 1. 建立文件夹 选择一个目录建立一个文件夹,比如 mycircle 吧,另外把对应 page 的相关文件都建立出来,包括 js,json,wxml 和 wxcc。 2. 开启元件属性 在 mycircle.json中开启 component 属…...
大模型(Large Models):探索人工智能领域的新边界
🌟文章目录 🌟大模型的定义与特点🌟模型架构🌟大模型的训练策略🌟大模型的优化方法🌟大模型的应用案例 随着人工智能技术的飞速发展,大模型(Large Models)成为了引领深度…...
缓存相关知识总结
一、缓存的作用和分类 缓存可以减少数据库的访问压力,提升整个网站的数据访问速度,改善数据库的写入性能。缓存可以分为两种: 缓存在应用服务器上的本地缓存:访问速度快,但受应用服务器内存限制 缓存在专门的分布式缓存…...
Mapmost Alpha:开启三维城市场景创作新纪元
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
【大模型完全入门手册】——引言
博主作为一名大模型开发算法工程师,很希望能够将所学到的以及实践中感悟到的内容梳理成为书籍。作为先导,以专栏的形式先整理内容,后续进行不断更新完善。希望能够构建起从理论到实践的全流程体系。 助力更多的人了解大模型,接触大模型,一起感受AI的魅力! 在当今人工智能…...
在 Vue 3 中使用 Axios 发送 POST 请求
在 Vue 3 中使用 Axios 发送 POST 请求需要首先安装 Axios,然后在 Vue 组件或 Vuex 中使用它。以下是一个简单的安装和使用案例: 安装 Axios 你可以使用 npm 或 yarn 来安装 Axios: npm install axios # 或者 yarn add axios 使用 Axios…...
【LeetCode刷题记录】189. 轮转数组
189 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 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 步: …...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
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…...
