社区
C语言
帖子详情
求一个简单的C语言算法题
kinsey0514
2007-02-05 09:48:12
找出所有六位数中满足下列条件的数字
就是若在此6位数中相邻3个或3个以上数字相同,找出这些数,并显示出来。
...全文
476
12
打赏
收藏
求一个简单的C语言算法题
找出所有六位数中满足下列条件的数字 就是若在此6位数中相邻3个或3个以上数字相同,找出这些数,并显示出来。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lzwyg
2007-02-06
打赏
举报
回复
排列效率最高
今晚打老虎33333333
2007-02-05
打赏
举报
回复
int Help(int a[], unsigned int n)
{
if(a == NULL)
{
return -1;
}
int tmp;
int count = 1;
for(int i = 0;i < n; i++)
{
if(a[i] == a[i+1])
{
tmp = a[i];
count++;
}
else
{
//如果大于3则打印
if(count > 2)
{
printf("Number is %d\ , %d times\n", tmp, count);
}
count = 1;
}
if(i == n -1)
{
//如果大于3则打印
if(count > 2)
{
printf("Number is %d\ , %d times\n", tmp, count);
}
}
}
return 0;
}
kangzuo
2007-02-05
打赏
举报
回复
楼上好象不对啊
好多数没找到
=========================
是现写的程序,没有测试过,知识思想行了。
细心看有个bug,修改一下:
int iNum, iTemp, iRe, iT1, iT2;
for(iNum=100000;iNum<1000000;iNum++)
{
iRe=0;
iTemp = iNum;
iT1 = iT2 = -1; //原来是iT1 = iT2 = 0;
while(1)
{
iT1 = iTemp % 10;
iTemp = iTemp / 10;
if(iTemp==0)break;
if(iT1==iT2)iRe++;
else iRe=0;
iT2 = iT1;
if(iRe>=2)printf("%d\r\n", iNum); //原来是iRe>2
}
}
jixingzhong
2007-02-05
打赏
举报
回复
程序直接判断也是可以的:
数据很多,
建议输出到文件中查看吧
(编译后得到 test.exe, dos下使用命令 test.exe>>test.txt 将结果输出到文件)
#include <stdio.h>
#include <stdlib.h>
int main()
{
long l=100000;
char tmp[8]={0};
char *check[]={"000","111","222","333","444","555","666"
,"777","888","999"};
for(; l<1000000; l++)
{
int i;
sprintf(tmp, "%ld", l);
for(i=0; i<10; i++)
if(strstr(tmp, check[i]) != NULL)
{
printf("%ld\t", l);
break;
}
}
system("PAUSE");
return 0;
}
kinsey0514
2007-02-05
打赏
举报
回复
楼上好象不对啊
好多数没找到
jixingzhong
2007-02-05
打赏
举报
回复
排列是比较快的办法,
将3个 0-9中的各个数值, 以及 任意一个 3联数(比如111、222等),如此四个元素进行排列即可,注意考虑一下首位不能为0 。
kangzuo
2007-02-05
打赏
举报
回复
直接组合出来不就可以了???靠,这样的东西也需要查找?
======================================================
对,直接组合效率更高,我怎么没想到
kangzuo
2007-02-05
打赏
举报
回复
int iNum, iTemp, iRe, iT1, iT2;
for(iNum=100000;iNum<1000000;iNum++)
{
iRe=0;
iTemp = iNum;
iT1 = iT2 = 0;
while(1)
{
iT1 = iTemp % 10;
iTemp = iTemp / 10;
if(iTemp==0)break;
if(iT1==iT2)iRe++;
else iRe=0;
iT2 = iT1;
if(iRe>2)printf("%d\r\n", iNum);
}
}
kinsey0514
2007-02-05
打赏
举报
回复
怎么组?
积木
2007-02-05
打赏
举报
回复
直接组合出来不就可以了???靠,这样的东西也需要查找?
bpttc
2007-02-05
打赏
举报
回复
一时粗心,写错一句,现在改正
#include <stdio.h>
#include <stdlib.h>
void main()
{
int iNum, iTemp, iLst, iRe;
for(iNum=100000; iNum<1000000; ++iNum)
{
iLst = iNum%10; //上面这处写错了
iRe = 0;
for(iTemp=iNum/10; iTemp>0; iTemp/=10)
{
if(iTemp%10 == iLst)
{
++iRe;
}
else
{
iRe = 0;
iLst = iTemp%10;
}
if(2 == iRe)
{
printf("%d\n", iNum);
system("pause");
break;
}
}
}
}
bpttc
2007-02-05
打赏
举报
回复
#include <stdio.h>
void main()
{
int iNum, iTemp, iLst, iRe;
for(iNum=100000; iNum<1000000; ++iNum)
{
iLst = iTemp%10;
iRe = 0;
for(iTemp=iNum/10; iTemp>0; iTemp/=10)
{
if(iTemp%10 == iLst)
{
++iRe;
}
else
{
iRe = 0;
iLst = iTemp%10;
}
if(2 == iRe)
{
printf("%d\n", iNum);
break;
}
}
}
}
C语言
算法
题
C语言
算法
题
.zip
C语言
算法
题
.zip
大一
C语言
六道
简单
编程
算法
题
(详细)
C语言
程序语言及流程图来描述下面几个
题
目的
算法
: (1)
求
1 + 2 + 3 + …+1000 (2)
求
1 × 2 × 3 × … × 10 (3)
求
1 - 1/2+1/3-1/4+…+1/19-1/20 (4) 输入
一个
1 ~ 1000 之间的整数,判断它是否是...
经典
C语言
算法
题
经典
C语言
算法
题
8皇后 高精度N! 解方程组 链表
C语言
经典
算法
题
目及答案.pdf
C语言
经典
算法
题
目及答案.pdf
C语言
算法
考试复习
题
一些经典的
算法
和答案关于
C语言
的,我们复习的时候用的,希望可以帮到你
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章