【无标题】

PAT刷题心得体会

基础编程题目集



辅助数组的作用

本人在进行基础阶段的时候,发现许多题目的解法都存在一个共性,就是需要使用到辅助数组进行计数。

情形

题目1
在这里插入图片描述
本人一开始的思路,将每一位都单独分离出来,然后使用if语句进行判断。但是,终究还是把问题想简单了,因为涉及到整型数据类型的最大长度,所以无法确定输入数据的位数,进而使用if语句是无法实现的,在网络上搜索解法之后,发现使用数组记录出现的次数,非常的巧妙,在此之下,特别想记录一下。

题解如下:

int IsTheNumber(const int N){
    int flag_1 = 0,flag_2=0;
    int a[10]={0};
    int d,i,data;
    int m =sqrt(N);
    data = N;
    if(m*m == N){
        flag_2 = 1;
    }
    while(data){
        d = data%10;
        data = data/10;
        a[d]++;
    }
    for (i = 0;i < 10;i++){
        if(a[i] > 1){
            flag_1 = 1;
        }
    }
    if(flag_1&&flag_2){
        return 1;
    }
    return 0;
}

还有还有,辅助标记真的作用也很大,便于进行判定!

在上一个类似的题目吧!!!

题目2
在这里插入图片描述
在吸取了上个题目的教训之后,看到问题立即反应出来使用辅助数组进行次数的记录,高效且便捷!无敌!!!

题解如下:

int Count_Digit(const int N,const int D){
    int data [10] = {0};
    int temp,i;
    if (N == 0)
        return 1;
    if(N < 0){
        temp = -1*N;
    }else{
        temp = N;
    }
    while(temp){
        i = temp%10;
        temp = temp/10;
        data[i]++;
    }
    return data[D];
}

总结

在进行诸如相同数字的个数统计之类的问题时,记得使用一个整型数组进行辅助记录!

int a[10 ] = {0};

好了,今天的分享就到此为止,本人编程基础基本语法掌握还可以,目前正在刷基础题目进行复习,然后会上算法题,有些问题说的可能不是具体恰当,还请大佬们批评指正,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值