首页 > 编程知识 正文

c语言怎么做界面按钮,用c语言编写的代码程序

时间:2023-05-04 03:43:16 阅读:16203 作者:287

1 .滑动窗口思想:

这是在大数组中运行的子列表,它是基本元素的集合。 如果您有一个数组[a b c d e f g h ],并且大小为3的滑动窗口在上面滑动,则:

[a b c]

[b c d]

[c d e]

[d e f]

[e f g]

[f g h]

通常,使用该窗口在数组的合法区间内滑动,可以大大提高算法的效率

2 .滑动窗口的一些例题应用

1。

思考:

滑动窗口算法可以解决字符串子字符串中的一些类型的应用问题

主要思想是:left在right的同时从0变化。 如果散列表中记录的dict多次出现,则将左边距重新代入新出现的位置,右边距无论如何向后移动一个,每次记录max。 max从右向左引再添加一个是因为从0开始。

图解:

源代码:

#包含

#包含

intlengthoflongestsubstring (char * s ) {

if(s==null )返回0;

int max=0; //记录最长长度max

int left=0,right=0; //幻灯片窗口的左边界和右边界

int dict[256]={0}; //和前面的排序一样,制作像散列表那样的东西,用排列记录其出现次数

索引;

for (; s[right]!=' '; right ()。

索引=s [ right ]; //得到对应文字的下标

if(dict[index]left ) )。

left=dict[index];

dict[index]=right 1; //注意:到只有一个字符的时候为止的长度是1,所以这里右边距加1

if (最大左1 ) ) )。

max=right-left 1; //更新最大值

}

返回最大值;

}

主()。

char a[99];

gets(a;

int n;

n=长整型(a;

printf('%d ',n );

}

思考:

同样地,通过滑动窗口,对每个循环求和,同时移动右边距,如果和大于目标值则进行求最小值的判断,第一次进入时将最小值从此时的右边距中减去0,并且sum减去左边距的值后进行左边距的判断此时,如果左边界不大于目标值,则继续原始循环

intminsubarraylen(ints,int* nums,int numsSize )。

int left=0;

int right=0;

int min=0;

int sum=0;

wile (轻型编号) {

sum =nums[right];

光之美少女;

wile(sum=s ) {

if(min==0) {

最小=右左;

}

else{

最小光左(if ) )。

最小=右左;

}

sum -=nums[left];

左足;

}

}

返回分钟;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。