算法设计与分析:第二章 递归 2.3使x^2为一个各位数字互不相同的九位数

来源:互联网 发布:淘宝的muji官方旗舰店 编辑:程序博客网 时间:2024/06/05 07:47
/*求x:使x^2为一个各位数字互不相同的九位数分析:对于x^2,分解各位,采用一个A[10]数组,A[i]初始设为0:表示该位上还没有数字A[i]为1:表示该位上已经含有数字;剪枝条件是如果当前A[iNum] == 1表明之前已经有一个这样的数字,因此此时可以删除*/#include <stdio.h>#include <string.h>int iVisArr[10] = {0};bool divideNum(long long iNum,int* pVisArr){memset(pVisArr,0,sizeof(pVisArr));int iNumCopy = iNum;int iCnt = 0;//计数器用于判断是不是出现9个数字do{int iDigitNum = iNum % 10;iNum /= 10;if( pVisArr[iDigitNum] == 0 )//如果当前数字没有出现过,那么就累加{pVisArr[iDigitNum]++;iCnt++;}else//如果已经出现过,说明出现重复{return false;}}while(iNum);if(iCnt != 9){return false;}else{return true;}}void process(){for(long long i = 10000; i < 35000 ; i++){if(divideNum(i*i,iVisArr)){printf("%d\n",i);}}}int main(int argc,char* argv[]){process();getchar();return 0;}

0 0
原创粉丝点击