您好,欢迎光临本网站![请登录][注册会员]  
文件名称: bit14彻底解决一共52个14位数多一位少一位都不行20160222_1711.7z
  所属分类: C
  开发工具:
  文件大小: 22kb
  下载次数: 0
  上传时间: 2016-02-23
  提 供 者: wb4***
 详细说明: // 2016/2/21 10:32 准备再次解答这个问题了。小学的时候使用人工枚举方法,这个我不擅长!现在决定用程序来解决了! // 2016/2/22 16:26 代码优化整理完成!!!! // 给你一个高难度的题目。 // 有一个14位数。 // 由 2个1 2个2 2个3 2个4 2个5 2个6 2个7组成 // 其中: // 2个1中有1个数字。(衍生题目) // 2个2中有2个数字 // 2个3中有3个数字 // 2个4中有4个数字 // 2个5中有5个数字。 // 2个6中有6个数字。 // 2个7中有7个数字 // // 请给出一个 这样的14位数字(总数大于10个。给一个即可!) // 这是我小学6年级的时候的 奥数考题! #include #include #include #include #include int main(void) { unsigned char ucArray[15] = {0}; // int i = 0; // f or(i=1; i<15; i++) // { // printf("*ucArray[%d]=%d\n", i, ucArray[i]); // } // 2016/2/21 11:10 第一位数字完成 int bit01 = 0; for(bit01=1; bit01<=7; bit01++) { unsigned char ucArray01[15] = {0}; int temp01 = 0; for(temp01=0; temp01<15; temp01++) { ucArray01[temp01] = ucArray[temp01]; } ucArray01[1] = bit01; ucArray01[1+bit01+1] = bit01; // for(temp01=1; temp01<15; temp01++) // { // printf("%d=%d ", temp01, ucArray01[temp01]); // } // // printf("*1\n"); // 2016/2/21 11:33 第二位数字完成 int bit02 = 0; for(bit02=1; bit02<=7; bit02++) { unsigned char ucArray02[15] = {0}; int temp02 = 0; for(temp02=0; temp02<15; temp02++) { ucArray02[temp02] = ucArray01[temp02]; } // 2016/2/21 11:17 需要判断第2位数字 和 接着的数字必须没有被占用。还有就是不能重复。 if(0==ucArray02[2]) { for(temp02=1; temp02<15; temp02++) { if(ucArray02[temp02]>0) { // continue; if(ucArray02[temp02]==bit02) { temp02 = 99; break; } } } if(temp02>15) { continue; } if(0==ucArray02[2+bit02+1]) { ucArray02[2] = bit02; ucArray02[2+bit02+1] = bit02; } else { continue; } } // for(temp02=1; temp02<15; temp02++) // { // printf("%d=%d ", temp02, ucArray02[temp02]); // } // // printf("*2\n"); // 2016/2/21 20:18 第三位数字完工 int bit03 = 0; for(bit03=1; bit03<=7; bit03++) { unsigned char ucArray03[15] = {0}; int temp03 = 0; for(temp03=0; temp03<15; temp03++) { ucArray03[temp03] = ucArray02[temp03]; } // 2016/2/21 11:17 需要判断第2位数字 和 接着的数字必须没有被占用。还有就是不能重复 if(0==ucArray03[3]) { for(temp03=0; temp03<15; temp03++) { if(ucArray03[temp03]>0) { if(ucArray03[temp03]==bit03) { // continue; temp03 = 99; break; } } } if(temp03>15) { continue; } if(0==ucArray03[3+bit03+1]) { ucArray03[3] = bit03; ucArray03[3+bit03+1] = bit03; } else { continue; } } else { bit03 = 8; } // for(temp03=1; temp03<15; temp03++) // { // printf("%d=%d ", temp03, ucArray03[temp03]); // } // // printf("*3\n"); // 2016/2/21 20:18 第四位数字(将所有的03替换为04,还有就是02替换为03) int bit04 = 0; for(bit04=1; bit04<=7; bit04++) { unsigned char ucArray04[15] = {0}; int temp04 = 0; for(temp04=0; temp04<15; temp04++) { ucArray04[temp04] = ucArray03[temp04]; } // 2016/2/21 11:17 需要判断第2位数字 和 接着的数字必须没有被占用。还有就是不能重复 if(0==ucArray04[4]) { for(temp04=1; temp04<15; temp04++) { if(ucArray04[temp04]>0) { if(ucArray04[temp04]==bit04) { // continue; temp04 = 99; break; } } } if(temp04>15) { continue; } if(0==ucArray04[4+bit04+1]) { ucArray04[4] = bit04; ucArray04[4+bit04+1] = bit04; } else { continue; } } else { bit04 = 8; } // for(temp04=1; temp04<15; temp04++) // { // printf("%d=%d ", temp04, ucArray04[temp04]); // } // // printf("*4\n"); // 2016/2/21 20:30 第5位数字 int bit05 = 0; for(bit05=1; bit05<=7; bit05++) { unsigned char ucArray05[15] = {0}; int temp05 = 0; for(temp05=0; temp05<15; temp05++) { ucArray05[temp05] = ucArray04[temp05]; } // 2016/2/21 11:17 需要判断第2位数字 和 接着的数字必须没有被占用。还有就是不能重复 if(0==ucArray05[5]) { for(temp05=1; temp05<15; temp05++) { if(ucArray05[temp05]>0) { if(ucArray05[temp05]==bit05) { // continue; temp05 = 99; break; } } } if(temp05>15) { continue; } if(0==ucArray05[5+bit05+1]) { ucArray05[5] = bit05; ucArray05[5+bit05+1] = bit05; } else { continue; } } else { bit05 = 8; } // for(temp05=1; temp05<15; temp05++) // { // printf("%d=%d ", temp05, ucArray05[temp05]); // } // // printf("*5\n"); // 2016/2/21 20:38 第6位数字 int bit06 = 0; for(bit06=1; bit06<=7; bit06++) { unsigned char ucArray06[15] = {0}; int temp06 = 0; for(temp06=0; temp06<15; temp06++) { ucArray06[temp06] = ucArray05[temp06]; } if(0==ucArray06[6]) { for(temp06=1; temp06<15; temp06++) { if(ucArray06[temp06]>0) { if(ucArray06[temp06]==bit06) { temp06 = 99; break; } } } // 2016/2/22 12:20 清除重复数字 if(temp06>15) { continue; } if(0==ucArray06[6+bit06+1]) { ucArray06[6] = bit06; ucArray06[6+bit06+1] = bit06; } else { continue; } } else { bit06 = 8; } // for(temp06=1; temp06<15; temp06++) // { // printf("%d=%d ", temp06, ucArray06[temp06]); // } // // printf("*6\n"); // 2016/2/21 21:52 第7位数字 int bit07 = 0; for(bit07=1; bit07<=7; bit07++) { unsigned char ucArray07[15] = {0}; int temp07 = 0; for(temp07=0; temp07<15; temp07++) { ucArray07[temp07] = ucArray06[temp07]; } // 2016/2/22 12:24 使用新的逻辑 if(0==ucArray07[7]) { for(temp07=1; temp07<15; temp07++) { if(ucArray07[temp07]>0) { if(ucArray07[temp07]==bit07) { temp07 = 99; break; } } } // 2016/2/22 12:20 清除重复数字 if(temp07>15) { continue; } if((7+bit07+1)>14) { continue; } if(0==ucArray07[7+bit07+1]) { // 357436 25427161* 漏了这一句 ucArray07[7] = bit07; ucArray07[7+bit07+1] = bit07; } else { continue; } } else { bit07 = 8; } // for(temp07=1; temp07<15; temp07++) // { // printf("%d=%d ", temp07, ucArray07[temp07]); // } // // printf("*7\n"); // 2016/2/21 21:58 第8个数字 int bit08 = 0; for(bit08=1; bit08<=7; bit08++) { unsigned char ucArray08[15] = {0}; int temp08 = 0; for(temp08=0; temp08<15; temp08++) { ucArray08[temp08] = ucArray07[temp08]; } if(0==ucArray08[8]) { for(temp08=1; temp08<15; temp08++) { if(ucArray08[temp08]>0) { if(ucArray08[temp08]==bit08) { temp08 = 99; break; } } } if(temp08>15) { continue; } // 2016/2/22 11:42 数组越界检查(超过14位了) if((8+bit08+1)>14) { continue; } if(0==ucArray08[8+bit08+1]) { ucArray08[8] = bit08; ucArray08[8+bit08+1] = bit08; } } else { bit08 = 8; } // for(temp08=1; temp08<15; temp08++) // { // printf("%d=%d ", temp08, ucArray08[temp08]); // } // // printf("*8\n"); // 2016/2/21 22:03 第9位数字 填字的话只剩下这种情况(最后六位:431614):xxxxxxxx431614 int bit09 = 0; // for(bit09=1; bit09<=7; bit09++) for(bit09=1; bit09<=4; bit09++) { unsigned char ucArray09[15] = {0}; int temp09 = 0; for(temp09=0; temp09<15; temp09++) { ucArray09[temp09] = ucArray08[temp09]; } if(0==ucArray09[9]) { for(temp09=1; temp09<15; temp09++) { if(ucArray09[temp09]>0) { if(ucArray09[temp09]==bit09) { temp09 = 99; break; } } } if(temp09>15) { continue; } // 2016/2/22 11:42 数组越界检查(超过14位了) if((9+bit09+1)>14) { continue; } if(0==ucArray09[9+bit09+1]) { ucArray09[9] = bit09; ucArray09[9+bit09+1] = bit09; } } else { bit09 = 8; } // for(temp09=1; temp09<15; temp09++) // { // printf("%d=%d ", temp09, ucArray09[temp09]); // } // // printf("*9\n"); // 2016/2/21 22:08 第10位数字 填字的话只剩下这种情况(最后五位:31213):xxxxxxxxx31213 int bit10 = 0; // for(bit10=1; bit10<=7; bit10++) for(bit10=1; bit10<=3; bit10++) { unsigned char ucArray10[15] = {0}; int temp10 = 0; for(temp10=0; temp10<15; temp10++) { ucArray10[temp10] = ucArray09[temp10]; } if(0==ucArray10[10]) { for(temp10=1; temp10<15; temp10++) { if(ucArray10[temp10]>0) { if(ucArray10[temp10]==bit10) { temp10 = 99; break; } } } if(temp10>15) { continue; } // 2016/2/22 11:42 数组越界检查(超过14位了) if((10+bit10+1)>14) { continue; } if(0==ucArray10[10+bit10+1]) { ucArray10[10] = bit10; ucArray10[10+bit10+1] = bit10; } } else { bit10 = 8; } // for(temp10=1; temp10<15; temp10++) // { // printf("%d=%d ", temp10, ucArray10[temp10]); // } // // printf("*10\n"); // 2016/2/21 22:15 第11位数字 填字的话只剩下这种情况(最后四位:2162):xxxxxxxxxx2162 int bit11 = 0; // for(bit11=1; bit11<=7; bit11++) for(bit11=1; bit11<=2; bit11++) { unsigned char ucArray11[15] = {0}; int temp11 = 0; for(temp11=0; temp11<15; temp11++) { ucArray11[temp11] = ucArray10[temp11]; } if(0==ucArray11[11]) { for(temp11=1; temp11<15; temp11++) { if(ucArray11[temp11]>0) { if(ucArray11[temp11]==bit11) { temp11 = 99; break; } } } if(temp11>15) { continue; } if((11+bit11+1)>14) { continue; } if(0==ucArray11[11+bit11+1]) { ucArray11[11] = bit11; ucArray11[11+bit11+1] = bit11; } else { continue; } } else { bit11 = 8; } for(temp11=1; temp11<12; temp11++) { if(0==ucArray11[temp11]) { temp11 = 88; break; } } if(temp11>15) { continue; } // for(temp11=1; temp11<15; temp11++) // { // printf("%d=%d ", temp11, ucArray11[temp11]); // } // // printf("*11\n"); // 2016/2/21 22:44 第12位数字 填字的话只剩下这种情况(最后三位:161):35743625427161 int bit12 = 0; // for(bit12=1; bit12<=7; bit12++) for(bit12=1; bit12<=1; bit12++) { unsigned char ucArray12[15] = {0}; int temp12 = 0; for(temp12=0; temp12<15; temp12++) { ucArray12[temp12] = ucArray11[temp12]; } if(0==ucArray12[12]) { // 2016/2/22 15:17 1617245263 4753 for(temp12=1; temp12<15; temp12++) { if(ucArray12[temp12]>0) { if(ucArray12[temp12]==bit12) { temp12 = 99; break; } } } if(temp12>15) { continue; } if((12+bit12+1)>14) { continue; } if(0==ucArray12[12+bit12+1]) { ucArray12[12] = bit12; ucArray12[12+bit12+1] = bit12; } else { continue; } } else { bit12 = 8; } // 2016/2/22 11:29 去掉 数字中有零的输出:35673415164700 // for(temp12=1; temp12<13; temp12++) for(temp12=1; temp12<15; temp12++) { if(0==ucArray12[temp12]) { temp12 = 88; break; } } if(temp12>15) { continue; } for(temp12=1; temp12<15; temp12++) { // printf("%d=%d ", temp12, ucArray12[temp12]); printf("%d", ucArray12[temp12]); } printf("*12\n"); } } } } } } } } } } } } return 0; } ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: C语言
 输入关键字,在本站1000多万海量源码库中尽情搜索: