c语言100例25题

本文通过实例讲解了双指针在字符串比较中的应用,并深入剖析了五层嵌套循环的逻辑,展示了如何利用辅助数组优化查找过程。同时,涉及到了辅助数组h在避免重复选择中的关键作用。

 

 

#include <stdio.h>
const int N = 5;
int h[6];

int main() {
    int i, j, k, l, m;
    
    for(i = 1; i <= N; ++i) {
        h[i] = 1;                                // (1)    
        for(j = 1; j <= N; ++j) {
            if(h[j]) continue;                   // (2)
            h[j] = 1;
            for(k = 1; k <= N; ++k) {
                if(h[k]) continue;               // (3)
                h[k] = 1;
                for(l = 1; l <= N; ++l) {
                    if(h[l]) continue;           // (4)
                    h[l] = 1; 
                    for(m = 1; m <= N; ++m) {
                          if(h[m]) continue;     // (5)
                          printf("%d%d%d%d%d\n", i, j, k, l, m);
                    }
                    h[l] = 0;                    // (6)
                }
                h[k] = 0;                        // (7)
            }
            h[j] = 0;                            // (8)
        }
        h[i] = 0;                                // (9)
    }
    return 0;
}
思路:

设置辅助数组h

h中i元素置一说明序列中i元素已经被选

五层循环,每层循环选一个数,选到的数置一,在后续循环中要判断h[j](当层循环)是否为1,如果为1则跳过)

(如第一次循环中第一个数字为1,h[1]置一,则在j循环j=1时,因为h[i]=1所以要跳过)

当循环结束时,将对应h置0

练习题1

 

 学习一下双指针

思路:两个字符串,指针先都指向起点,如果指向的元素相同,则两个指针都加一,如果不同,则s(较长的串)+1,当判断j(较长串的指针)指到末尾时,判断i(短串指针)是否到末尾

到末尾,则符合

 

 做过了复习下

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值