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