单片机自动排列上料控制程序 下

/***************上料时间参数显示******************/

void dis_timea(uchar s)

{

uchar x,y;

uint i=0;

A1=s/100;

A2=(s-A1*100)/10;

A3=s-A1*100-A2*10;

for(y=0;y<2;y++) //百位显示

{

Write_IIC_Command(0XB2+y); //纵向页

Write_IIC_Command(00); //横向离左部边缘开始的距离

Write_IIC_Command(0X15); //横向第四个字

for(x=0;x<8;x++) //横向像素

{

Write_IIC_Data(show1[x+y*8+A1*16]); //0--A字符表

}

for(x=0;x<8;x++) //横向像素

{

Write_IIC_Data(show1[x+y*8+A2*16]);

}

}

for(y=0;y<2;y++) //十位显示

{

Write_IIC_Command(0XB2+y); //纵向页

Write_IIC_Command(00); //横向离左部边缘开始的距离

Write_IIC_Command(0X16); //横向第五个字

for(x=0;x<8;x++) //横向像素

{

Write_IIC_Data(show1[x+y*8+A3*16]);

}

for(x=0;x<8;x++) //横向像素

{

Write_IIC_Data(0X00); //2025 4 20

}

}

}

/***************设置参数显示******************/

void dis_timeb(uchar s)

{

uchar x,y;

uint i=0;

A1=s/100;

A2=(s-A1*100)/10;

A3=s-A1*100-A2*10;

for(y=0;y<2;y++) //百位显示

{

Write_IIC_Command(0XB4+y); //纵向页

Write_IIC_Command(00); //横向离左部边缘开始的距离

Write_IIC_Command(0X15); //横向第四个字

for(x=0;x<8;x++) //横向像素

{

Write_IIC_Data(show1[x+y*8+A1*16]); //0--A字符表

}

for(x=0;x<8;x++) //横向像素

{

Write_IIC_Data(show1[x+y*8+A2*16]);

}

}

for(y=0;y<2;y++) //十位显示

{

Write_IIC_Command(0XB4+y); //纵向页

Write_IIC_Command(00); //横向离左部边缘开始的距离

Write_IIC_Command(0X16); //横向第五个字

for(x=0;x<8;x++) //横向像素

{

Write_IIC_Data(show1[x+y*8+A3*16]);

}

}

}

/***************显示参数归零******************/

void csgl()

{

uchar x,y;

uint Cnt=32;

//参B0 12 00

for(y=0;y<2;y++)

{

Write_IIC_Command(0xb0+y); //竖向第一行

Write_IIC_Command(0x00);

Write_IIC_Command(0x11); //横向第三个字

for(x=0;x<16;x++) //横向像素

{

Write_IIC_Data(show4[x+y*16+Cnt*0]); //字符表第0个字

}

}

//数B0 13 01

for(y=0;y<2;y++)

{

Write_IIC_Command(0xb0+y); //竖向第一行

Write_IIC_Command(0x00);

Write_IIC_Command(0x12); //横向第四个字

for(x=0;x<16;x++) //横向像素

{

Write_IIC_Data(show4[x+y*16+Cnt*1]); //字符表第1个字

}

}

//归B0 14 02

for(y=0;y<2;y++)

{

Write_IIC_Command(0xb0+y); //竖向第一行

Write_IIC_Command(0x00);

Write_IIC_Command(0x13); //横向第五个字

for(x=0;x<16;x++) //横向像素

{

Write_IIC_Data(show4[x+y*16+Cnt*27]); //字符表第2个字

}

}

//零B0 15 03

for(y=0;y<2;y++)

{

Write_IIC_Command(0xb0+y); //竖向第一行 机

Write_IIC_Command(0x00);

Write_IIC_Command(0x14); //横向第六个字

for(x=0;x<16;x++) //横向像素

{

Write_IIC_Data(show4[x+y*16+Cnt*28]); //字符表第3个字

}

}

}

/***************显示开关数率******************/

void DisRunSpeed()

{

uchar x,y;

uint Cnt=32;

//开B2 10 36

for(y=0;y<2;y++)

{

Write_IIC_Command(0xb2+y); //竖向第一行

Write_IIC_Command(0x00);

Write_IIC_Command(0x10); //横向第三个字

for(x=0;x<16;x++) //横向像素

{

Write_IIC_Data(show4[x+y*16+Cnt*36]); //字符表第0个字

}

}

//关B2 11 37

for(y=0;y<2;y++)

{

Write_IIC_Command(0xb2+y); //竖向第一行

Write_IIC_Command(0x00);

Write_IIC_Command(0x11); //横向第四个字

for(x=0;x<16;x++) //横向像素

{

Write_IIC_Data(show4[x+y*16+Cnt*37]); //字符表第1个字

}

}

//数B2 12 1

for(y=0;y<2;y++)

{

Write_IIC_Command(0xb2+y); //竖向第一行

Write_IIC_Command(0x00);

Write_IIC_Command(0x12); //横向第五个字

for(x=0;x<16;x++) //横向像素

{

Write_IIC_Data(show4[x+y*16+Cnt*1]); //字符表第2个字

}

}

//率B2 13 17

for(y=0;y<2;y++)

{

Write_IIC_Command(0xb2+y); //竖向第一行 机

Write_IIC_Command(0x00);

Write_IIC_Command(0x13); //横向第六个字

for(x=0;x<16;x++) //横向像素

{

Write_IIC_Data(show4[x+y*16+Cnt*17]); //字符表第3个字

}

}

}

/*----------功能判断子程序------------*/

void function(uchar FuncData)

{

uchar func;

func=FuncData;

Dis_Num(func);

display(func); //临时测试

if(func==1) //功能设置循环置为1

{

Initial_LY096BG30(); //初始化显示屏

Infrared_delay(); //上料延时

// DisNumber(0); //功能编号

distest(RunTime_A);

}

if(func==2) //功能设置循环置为2

{

Initial_LY096BG30(); //初始化显示屏

photoelectricity_delay(); //光电延时

distest(RunTime_B);

}

if(func==3) //功能设置循环置为3

{

Initial_LY096BG30(); //初始化显示屏

DisStopData(); //显示电机速度

dishz(FHz); //参数显示 分离lmn百十个位数据

}

if(func==4) //功能设置循环置为4

{

Initial_LY096BG30(); //初始化显示屏

DisMotorSpeed(); //电机速度

distest(CT); //占空比

}

if(func==5) //功能设置循环置为4

{

Initial_LY096BG30(); //初始化显示屏

DisRunSpeed(); //开关数率 计数器

display(total); //

}

}

/*----------参数加-----------------*/

void DataOn( ) /*写数据B子函数*/

{ /*子函数开始*/

valb=valb+1; /**加一**/

if(valb>999)

valb=0; /*大于999归零*/

} /*子函数结束*/

/*----------参数减---------------*/

void DataDown( ) /*写数据B子函数*/

{ /*子函数开始*/

valb=valb-1; /**加一**/

if(valb==0)

valb=999; /*大于999归零*/

} //

/*-----------加减按键处理子程序------*/

void addfunt(int funtt,bit adddec) //功能编号 加减标志

{

int fun;

bit adddecb;

fun=funtt;

adddecb=adddec;

switch(fun)

{ //

case 1: //上升结束延时加

if(adddecb)

{

valb=RunTime_A; //数据交上升结束延时加函数子程序处理

DataOn(); //加函数 display()函数处理lmn

RunTime_A=valb; //处理数据交上升结束延时 存储器

distest(RunTime_A); //参数显示 分离lmn百十个位数据

write_eeprom();

}

else

{ //减

valb=RunTime_A; //数据交上升结束延时减函数子程序处理

DataDown(); //减函数 display()函数处理lmn

RunTime_A=valb; //处理数据交上升结束延时 存储器

distest(RunTime_A); //参数显示 分离lmn百十个位数据

write_eeprom();

}break;

case 2: //下降时间加

if(adddecb)

{

valb=RunTime_B; //数据交下降时间加函数子程序处理

DataOn(); //加函数 display()函数处理lmn

RunTime_B=valb; //处理数据交下降时间 存储器

distest(RunTime_B); //参数显示 分离lmn百十个位数据

write_eeprom();

}

else

{ //下降时间减

valb=RunTime_B; //数据交减函数子程序处理

DataDown(); //减函数 display()函数处理lmn

RunTime_B=valb; //处理数据交下降时间 存储器

distest(RunTime_B); //参数显示 分离lmn百十个位数据

write_eeprom();

}

break;

case 3: //

if(adddecb)

{

FHz = FHz/100; //

FHz=FHz+1; //

if(FHz>=200) //

{

FHz=0; //

}

dishz(FHz); //参数显示 分离lmn百十个位数据

Timer2_Init();

write_eeprom();

// write3(); //写EEPROM lmn百十个位数据

}

else

{

FHz = FHz/100; //

FHz=FHz-1; //

if(FHz==0)

{

FHz=200;

}

dishz(FHz); //参数显示 分离lmn百十个位数据

Timer2_Init(); //

write_eeprom(); //

}

break;

case 4: //占空比

if(adddecb)

{ //开模时间加

CT++; //数据交加函数子程序处理

if(CT>99)

CT=0; //处理数据交开模时间存储器

Timer2_Init(); //定时器2初始化

distest(CT); //参数显示 分离lmn百十个位数据

write_eeprom();

}

else

{ //开模时间减

CT--; //数据交加函数子程序处理

if(CT<1)

CT=99;

Timer2_Init(); //定时器2初始化

distest(CT); //参数显示 分离lmn百十个位数据

write_eeprom();

}

break;

case 5:

if(adddecb)

{ //开模时间加

RunTime_A=0X10; //上料延时

RunTime_B=0X20; //光电延时

FHz=190; //停顿时间

CT=85; //电机速度

total=5;

Timer2_Init(); //定时器2初始化

write_eeprom(); //

display(total); //

csgl();

}

else

{

RunTime_A=0X10; //上料延时

RunTime_B=0X20; //光电延时

FHz=190; //停顿时间

CT=85; //电机速度

total=5;

Timer2_Init(); //定时器2初始化

write_eeprom(); //

display(total); //

csgl();

}

break;

default :break;

}

}

/*************功能设置函数**************/

/*****功能,加减键设定各界面参数*********/

/************** **************/

void funset()

{

while(func) //进入功能设置流程

{

DisSetData(); //显示参数设置加减设置退出

if(func==0) //功能计数器为0返回主程序

break; //功能标志大于等于6功能计数器归零

if(!KEY_ADD) //检测按键加

{ //数据处理

adddecbit=1; //加减处理标志置1

addfunt(func,adddecbit); //调用加减处理功能子函数 func界面号adddecbit加减标志

}

if(!KEY_DEC) //检测按键减

{ //数据处理

adddecbit=0; //加减处理标志置0

addfunt(func,adddecbit); //调用加减处理功能子函数 func界面号adddecbit加减标志

}

if(!Funkey) //再检测功能键

{

func++; //功能标志加一

Delay_50ms(2); //延时等待

Dis_Num(func);

if(func>=6) //功能标志大于等于6归0

{

func=0; //功能计数器归零

Initial_LY096BG30(); //初始化显示屏

} //

function(func); //刷新功能显示界面

}

// 退出检测

RstKey();

for(;kcounter<5;) //按键循环5次

if(!Quitkey) //按键低电平

{

LowVoltKey(); //按键低电平 清除计数器

}

else if(~!Quitkey) //按键高电平

{

HighVoltKey(); //按键计数器加一 状态计数器加一

}

if(kstatus>=3) /*按键状态标志大于等于3为有效值*/

{

func=0;

cleardisp();

}

}

cleardisp();

Diswait();

Delay_50ms(5);

}

/*****************************/

void MOTORLRUN() //顶进

{

do

{

RstKey(); //按键复位

for(;kcounter<5;) //按键循环5次

{

if(!INTPUT1) //按键低电平

{

LowVoltKey();

}

else if(~!INTPUT1) //按键高电平

{

HighVoltKey();

}

}

if(kstatus>=4) /*按键状态标志大于等于3为有效值*/

{ /*循环检测 */

MOTORRUN_L=0;

}

}

while(MOTORRUN_L);

}

/*****************************/

void MOTORRRUN() //顶退

{

do

{

RstKey(); //按键复位

for(;kcounter<5;) //按键循环5次

{

if(!INTPUT2) //按键低电平

{

LowVoltKey();

}

else if(~!INTPUT2) //按键高电平

{

HighVoltKey();

}

}

if(kstatus>=4) /*按键状态标志大于等于3为有效值*/

{ /*循环检测 */

MOTORRUN_R=0;

}

}

while(MOTORRUN_R);

}

//自动运行 INTPUT3

void AutoRun()

{

/***************检测料满停机信号*********************/

//低电平开始计时 到设定值料满停机

do

{ //定时器检测INTPUTD2

// 高电平 允许开摇摆电机

RstKey(); //

for(;kcounter<5;) //按键循环5次

{

if(!EXIT_0) //P3.2按键低电平

{

LowRst(); //按键低电平 清除计数器

}

else if(~!EXIT_0) //按键高电平

{

HighSet(); //按键计数器加一 状态计数器加一

}

}

if(kstatus>=3) /*按键状态标志大于等于3为有效值*/

{

Time_A=0;

Switch_Flag=0; //定时器计时标志

OUT1=1; //放料闸门关

if(Photoele_Flag==0) //光电上料允许

{

MOTORA_CW=0; //上料电机开

MOTORB_CW=0; //排列电机开启

}

}

/******外中断0检测到中断信号 置位Switch_Flag=1***/

/***************检测上料信号*计时到电机停止******/

if(Switch_Flag==1) /*按键状态标志大于等于3为有效值*/

{ //Switch_Flag=1;

LoaderMotorClose(); //"上料电机"显示关

DisWork(); //显示上料

MOTORA_CW=1; //上料电机停止

OUT1=0; //放料闸门开 计时到闸门关闭

for(Time_A=0;Time_A<RunTime_A;Time_A++)

{ //循环延时设定时间值

dis_timea(Time_A); //显示上料时间

Delay_50ms(5); //延时

}

Clear_State(); //清除第一行状态显示

Switch_Flag=0; //上料信号标志复位

MOTORA_CW=0; //上料电机开启

LoaderMotorOpen(); //"上料电机"显示开

OUT1=1;

}

if(dis_Flag==1) //定时器2读到一次低电平 刷新显示

{

dis_Flag=0;

dis_timeb(Time_B);

}

/***************光电低电平定时器计数 主程序显示时间******/

// Photoele_Flag=1 检测光电开关信号 高电平开排列电机 上料电机

if(Photoele_Flag==1)//光电 链条传输 运行关闭态 开摇摆电机

{

LoaderMotorClose(); //"上料电机"显示关

ArrangeMotorClose(); //"排列电机"显示关

MOTORA_CW=1; //上料电机关闭

MOTORB_CW=1; //排列电机关闭

MOTORB_CCW=1; //备用

Delay_50ms(50); //

RstKey(); //满料光电检测

for(;kcounter<10;) //按键循环5次

{

if(!INTPUTD2) //按键低电平

{

LowRst(); //

}

else if(~!INTPUTD2) //按键高电平

{

HighSet(); //

}

}

if(kstatus>=8) /*按键状态标志大于等于3为有效值*/

{ /*循环检测 */

Delay_50ms(10); //

MOTORA_CW=0; //上料电机开

MOTORB_CW=0; //排列电机开

LoaderMotorOpen(); //"上料电机"显示开

ArrangeMotorOpen(); //"排列电机"显示开

Photoele_Flag=0; //定时器中断计时标志 计时到电机停止

} //Clearkey

} //

//光电高电平 重启运行

RstKey(); //排列电机到位

for(;kcounter<10;) //按键循环5次

{

if(!INTPUT0) //按键低电平

{

LowVoltKey(); //按键低电平 清除计数器

}

else if(~!INTPUT0) //按键高电平

{

HighVoltKey(); //按键计数器加一 状态计数器加一

}

}

if(kstatus>=8) /*按键状态标志大于等于3为有效值*/

{

MOTORB_CW=1; //排列电机开

L_EN=1;

R_EN=1;

DisJacking(); //显示顶进

MOTORRUN_L=1; //电机正转标志

MOTORLRUN(); //顶进

L_PWM = 0;

OUT2=1;

L_EN=1;

R_EN=1;

Delay_50ms(5);

DisRetreat(); //显示顶退

MOTORRUN_R=1; //电机反转标志

MOTORRRUN(); //顶退

R_PWM = 0;

OUT2=1;

L_EN=0;

R_EN=0;

DisRetreat(); //清除显示

Clear_State(); //清除第一行状态显示 INTPUT3

//滑槽料满低电平检测

RstKey(); //排列电机到位

for(;kcounter<10;) //按键循环5次

{

if(!INTPUT3) //按键低电平

{

LowVoltKey(); //按键低电平 清除计数器

}

else if(~!INTPUT3) //按键高电平

{

HighVoltKey(); //按键计数器加一 状态计数器加一

}

}

if(kstatus>=8) /*按键状态标志大于等于3为有效值*/

{

//滑槽料满高电平检测

kstatus=0;

for(;kstatus<5;) //排列高电平检测

{

if(~!INTPUT3) //

kstatus++;

else

kstatus=0;

}

}

MOTORB_CW=0; //排列电机开

kstatus=0;

for(;kstatus<5;) //排列高电平检测

{

if(~!INTPUT0) //

kstatus++;

else

kstatus=0;

}

Delay_50ms(10); //延时再检测

}

//检测直流电机

RstKey(); //

for(;kcounter<8;) //按键循环5次

{

kcounter++;

if(~!StartD1) //按键高电平

{

kstatus++; //按键低电平 清除计数器

}

else if(!StartD1) //按键低电平

{

kstatus=0; //按键计数器加一 状态计数器加一

}

}

if(kstatus>=6) /*按键状态标志大于等于3为有效值*/

{

Reset_io(); //关闭输出

RunFlag=0; //自动运行循环标志

cleardisp(); //清除显示

Diswait(); //显示待机

}

//退出自动检测 StartD1

}

while(RunFlag); //

}

/**************定时中断*************************/

void timer0() interrupt 1

{

uchar aa;

aa++; //定时基数变量

if(aa>=200) //定时周期

{

aa=0; //定时基数归零

} //Photoele_Flag=1

//光电停机计时

if(Switch_Flag==1) //外中断0 开闸计时标志

{

Time_A++; //定时器计时开闸时间

if(Time_A>=RunTime_A) //计数器到开闸设定值

{

Time_A=0; //计数器归零

Switch_Flag=0; //开闸计时标志归零

}

}

//开闸计时

}

/*************P3.2下降沿中断**链条上料***********/

void exint0() interrupt 0 //INT0中断入口

{

RstKey();

for(;kcounter<5;) //按键循环5次

{

if(!EXIT_0) //P3.2按键低电平

{

LowVoltKey(); //按键低电平 计数器加一状态标志加一

}

else if(~!EXIT_0) //按键高电平

{

HighVoltKey(); //按键计数器加一 状态标志归零

}

}

if(kstatus>=3) /*按键状态标志大于等于3为有效值*/

{

Switch_Flag=1; //定时器计时标志

} //自动运行函数上料电机停止

//

}

//========================================================================

// 函数: void Timer0_Init(void)

// 描述: 定时器0初始化函数。

// 参数: none.

// 返回: none.

// 版本: VER1.0

// 日期: 2022-6-2

// 备注:

//========================================================================

void Timer_Init(void)

{

AUXR=0X80; //STC系列的1T 设置

TMOD=0X01; //

TL0=0X32;

TH0=0X53;

ET0=1;

TR0=1;

}

/**************定时器2初始化************/

void Timer2_Init()

{

AUXR|=0x40; //定时器2为12T模式 12MHZ

F_Hz = FHz*100; //*100 总分频20000HZ

T2L = (65536-FOSC/2/F_Hz); //初始化计时值

T2H = (65536-FOSC/2/F_Hz) >> 8;

AUXR |= 0x10; //定时器2开始计时

// INT_CLKO = 0x04; //使能定时器2的时钟输出功能

IE2 |= 0x04; //开定时器2中断

EA = 1; //打开总中断

if(F_Hz == 0||F_Hz == 20000) //当频率值为0或200Hz关闭输出

{

IE2 &= ~0x04; //关闭中断

AUXR &= ~0x10; //定时器2停止计时

// PWM1 = 0;

}

}

/*定时器2扩展外部普通IO中断****************/

/*P2.2低电平开计数器高电平关计数器*/

/******/

void t2int() interrupt 12 //中断入口

{

uint CT0,CT1,CT2,CT3; //

uchar SS; //

SS++; //定时基数变量

if(SS>=200) //定时周期

{

SS=0; //定时基数归零

//计时标志为0 检测低电平信号

if(Photoele_Flag==0) //满料光电检测

{

if(!INTPUTD2) //按键低电平 INTPUTD2 P2.2口

{

Time_B++; //计数满清零

dis_Flag=1; //计数器刷新显示标志

if(Time_B>=RunTime_B) //Auto_Run Time_B++

{

Photoele_Flag=1; //定时器中断计时标志 计时到电机停止

Time_B=0; //计数满清零

}

} //高电平计数器归零

else if(~!INTPUTD2) //按键低电平 INTPUT3 P3.3口

{

Time_B=0; //计数满清零

}

}

}

//

if(MOTORRUN_L==1)

{

CT2++;

if(CT2>=2)

{

CT2 = 0;

CT0++;

if(CT0>=CT)

{

L_PWM = 1; //

}

else

{

L_PWM = 0;

}

if(CT0>=100)

{

CT0 = 0;

}

}

}

//

if(MOTORRUN_R==1)

{

CT3++;

if(CT3>=2)

{

CT3 = 0;

CT1++;

if(CT1>=CT) //占空比

{

R_PWM = 1; //

}

else

{

R_PWM = 0;

}

if(CT1>=100)

{

CT1 = 0;

}

}

}

//

}

/******************** 主函数 **************************/

void main(void)

{

// P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能

func=0;

RunFlag=0; //自动运行循环标志

LED=0;

total=0;

IT0=1; //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)

EX0=1; //使能INT0中断

EA=1;

Init_io();

Initial_LY096BG30();

cleardisp();

red_eeprom();

Timer_Init(); //定时器0初始化

Timer2_Init(); //定时器2初始化

dis_Flag=0; //光电显示刷新标志

Run_Flag=0; //自动运行标志

Photoele_Flag=0; //光电低电平计时标志 定时器1读IO口

Valve_Time=0;

cleardisp();

red_eeprom();

display(total); //

Delay_50ms(10);

total++;

write_eeprom(); //

Diswait(); //

Step=5; //步进数

while(1)

{

// OUT2=~OUT2; //

Delay_50ms(5);

cleardisp();

Diswait(); //

RstKey();

for(;kcounter<10;) //按键循环5次

{

if(!Funkey) //按键低电平

{

LowVoltKey();

delay(50); //延时

}

else if(~!Funkey) //按键高电平

{

HighVoltKey();

delay(50); //延时

}

}

if(kstatus>=8) /*按键状态标志大于等于3为有效值*/

{ /*循环检测 */

Initial_LY096BG30(); //初始化显示屏

func+=1; // 功能循环标志

cleardisp();

DisSetData();

function(func); // 功能判断子程序 功能设置散转

funset(); //进入功能设置界面

} //Clearkey

///

//功能键

RstKey();

for(;kcounter<5;) //按键循环5次

{

if(!StartD1) //按键低电平

{

LowVoltKey(); //按键低电平 清除计数器

}

else if(~!StartD1) //按键高电平

{

HighVoltKey(); //按键计数器加一 状态计数器加一

}

}

if(kstatus>=3) /*按键状态标志大于等于3为有效值*/

{

cleardisp();

DisDoon(); //显示运行

DisLoaderMotor(); //上料电机

Delay_50ms(5);

DisArrangeMotor(); //排列电机

Delay_50ms(5);

dis_Value(Time_A);

dis_Val(Time_B);

Delay_50ms(10);

LoaderMotorOpen();

ArrangeMotorOpen();

RunFlag=1; //自动运行循环标志

AutoRun(); //自动运行子程序

}

} //参数设置 EEPROM储存

} //L2251 CODE11820 2025 5 68

相关推荐
大龄Python青年1 小时前
C语言 交换算法之加减法,及溢出防范
c语言·开发语言·算法
啊我不会诶1 小时前
CF每日5题
算法
朱剑君2 小时前
排序算法——基数排序
算法·排序算法
COOCC13 小时前
PyTorch 实战:从 0 开始搭建 Transformer
人工智能·pytorch·python·深度学习·算法·机器学习·transformer
拾忆-eleven4 小时前
C++算法(19):整数类型极值,从INT_MIN原理到跨平台开发实战
数据结构·c++·算法
JK0x074 小时前
代码随想录算法训练营 Day39 动态规划Ⅶ 打家劫舍
算法·动态规划
blammmp4 小时前
算法专题四:前缀和
java·开发语言·算法
望未来无悔5 小时前
系统学习算法:动态规划(斐波那契+路径问题)
java·算法
明月看潮生5 小时前
青少年编程与数学 02-018 C++数据结构与算法 25课题、图像处理算法
c++·图像处理·算法·青少年编程·编程与数学
我是一只鱼02235 小时前
LeetCode算法题 (反转链表)Day17!!!C/C++
数据结构·c++·算法·leetcode·链表