社区
数据结构与算法
帖子详情
面试题
hualin007
2005-10-09 03:02:54
输入:11111输出:5,1,
输入:22222输出:5,2,
输入:12345输出:-5,1,2,3,4,5,
输入:11223输出:2,1,2,2,1,3,
输入:12222输出:1,1,4,2,
输入:12344输出:-3,1,2,3,2,4,
...全文
254
18
打赏
收藏
面试题
输入:11111输出:5,1, 输入:22222输出:5,2, 输入:12345输出:-5,1,2,3,4,5, 输入:11223输出:2,1,2,2,1,3, 输入:12222输出:1,1,4,2, 输入:12344输出:-3,1,2,3,2,4,
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wolf_baby
2005-10-11
打赏
举报
回复
#include <stdio.h>
void main()
{
int x,x1,i,n=0;
int a[10]={0,0,0,0,0,0,0,0,0,0};
scanf("%d",&x);
x1=x;
while(x!=0)
{
a[x%10]++;
x/=10;
}
printf("input:%doutput:",x1);
for(i=0;i<10;i++)
if(a[i]==1) n++;
if(n>1) printf("%d,",-n);
for(i=0;i<10;i++)
{ if(a[i]!=0)
if((a[i]==1)&&(n>1))
printf("%d,",i);
else
printf("%d,%d,",a[i],i);
}
}
vc下编译通过,是samfeng_2003(风云)的方法,其实实现是简单的,关键好的是的上面所说的算法。
boylez
2005-10-11
打赏
举报
回复
输入:12222输出:1,1,4,2,
这个是不是也能输出为:-1,1,4,2,
samfeng_2003
2005-10-11
打赏
举报
回复
vc下怎么来编辑一个单独的文件喃?我从来没有整过!感觉turboc2.0太费劲了!:(
hualin007
2005-10-10
打赏
举报
回复
图片在哪呢?
hualin007
2005-10-10
打赏
举报
回复
能不能用c语言写出来呢?
samfeng_2003
2005-10-10
打赏
举报
回复
http://www.sestl.com/images/111.jpg
http://www.sestl.com/images/222.jpg
http://www.sestl.com/images/333.jpg
可以啊,这是我的结果截图得嘛!可以运行啊!
hualin007
2005-10-10
打赏
举报
回复
我运行了怎么通不过?
hualin007
2005-10-10
打赏
举报
回复
程序错误太多,估计修改一下就是一个好程序,你在机器上实现了吗?是哪种编译环境?
samfeng_2003
2005-10-10
打赏
举报
回复
呵呵!运行一下就知道了!这个我在turboc2里已经通过了!思路是,用数组和标志技术,数组里面1,2,3,4,5,6,7,8,9,分别对应1-9,因为以为你要的是5位整数,所以采用整数位分解的方法,然后和数组,对应,如果是1,那么A[1]就加1,然后最后来循环读一读数组,如果N为1,那么表示输入的数字里面只有一个数字,那么直接输出就可以了,否则就进行判断。如果输入的是字符串,那么就是进行字符串分解,然后对应数组存取就可以了。原理是一样的!大家可以通过turboc2调试一下!:)
hualin007
2005-10-10
打赏
举报
回复
规律很简单啊,就是输出如果第一个数是正数,则输入串里有这么多相同的字符,如果是负数,表示后面的有几个数不重复
wolf_baby
2005-10-10
打赏
举报
回复
samfeng_2003(风云)的方法不错,不过程序中还有错误吧。
for(i=0;i<10;i++)
if(a[i]!=0) n++;
if(n>1) printf("%d,",-n);
中间一行,应改为
if(a[i] == 1) n++;
要不然,“输入:12344输出:-3,1,2,3,2,4,”是实现不了的吧?
aSalt
2005-10-10
打赏
举报
回复
感觉就是麻烦,说个规律好不好,忙~
kingsonblog
2005-10-10
打赏
举报
回复
bool first=true;//第一个不同的数字不能不能表示为-1 x,应该是1 x
void print(const char *temp,int len){
if(first&&len==1)
cout<<len<<" ";
else
cout<<-1 * len<<" ";
for(int index=0;index<len;index++)
cout<<temp[index]<<" ";
first=false;
}
void prints(int len,char last){
first=false;
cout<<len<<" "<<last<<" ";
}
void compute(string buf){
int size=buf.size();
if(size==0)
return;
if(size==1){
print(buf.c_str(),1);
return;
}
char *temp=new char[size];
int len=0;
for(int index=1;index<size;index++){
if(buf[index]!=buf[index-1]){
if(len>0){//前面有相同的数据
prints(len,buf[index-1]);//打印相同数字,开始不同的数字
len=0;
}
else{//前面没有相同数字,可以开始存储上一个不同的数字
temp[-1*len]=buf[index-1];
len--;
}
if(index==size-1){
temp[-1*len]=buf[index];
len--;
print(temp,-1*len);
}
}
else{
if(len<0){//前面已经有不同的数字存储,打印
print(temp,-1*len);
len=2;
}
else if(len==0)//前面没有不同的数字
len=2;
else
len++;
if(index==size-1){
prints(len,buf[index-1]);
}
}
}
cout<<"\n";
}
kingsonblog
2005-10-10
打赏
举报
回复
void print(char *temp,int len){
if(len==1)
cout<<len<<" ";
else
cout<<-1 * len<<" ";
for(int index=0;index<len;index++)
cout<<temp[index]<<" ";
}
void compute(string buf){
int size=buf.size();
if(size==0)
return;
if(size==1){
print(buf,1);
return;
}
char *temp=new char[size];
int len=0;
char last=buf[0];
for(int index=1;index<size;index++){
if(buf[index]!=last){
if(len>0){
cout<<len<<" "<<last<<" ";
len=0;
}
else{
temp[-1*len]=last;
len--;
}
if(index==size-1){
temp[-1*len]=buf[index];
len--;
print(temp,-1*len);
}
}
else{
if(len<0){
print(temp,-1*len);
len=2;
}
else if(len==0)
len=2;
else
len++;
if(index==size-1){
cout<<len<<" "<<last<<" ";
}
}
last=buf[index];
}
cout<<"\n";
}
hualin007
2005-10-09
打赏
举报
回复
这个题不管谁第一次看到,都说简单,可是很少有人能够写的出来。
hualin007
2005-10-09
打赏
举报
回复
能把程序解释一下吗?感觉不是很对!
samfeng_2003
2005-10-09
打赏
举报
回复
修改了一下!
main()
{
int x,x1,i,n=0;
int a[10]={0,0,0,0,0,0,0,0,0,0};
scanf("%d",&x);
x1=x;
while(x!=0)
{
a[x%10]++;
x/=10;
}
printf("input:%doutput:",x1);
for(i=0;i<10;i++)
if(a[i]!=0) n++;
if(n>1) printf("%d,",-n);
for(i=0;i<10;i++)
{ if(a[i]!=0)
if(a[i]==1)
printf("%d,",i);
else
printf("%d,%d,",a[i],i);
}
}
samfeng_2003
2005-10-09
打赏
举报
回复
main()
{
int x,i,n=0;
int a[10]={0,0,0,0,0,0,0,0,0,0};
scanf("%d",&x);
while(x!=0)
{
a[x%10]++;
x/=10;
}
for(i=0;i<10;i++)
if(a[i]!=0) n++;
if(n>1) printf("%d,",-n);
for(i=0;i<10;i++)
{ if(a[i]!=0)
if(a[i]==1)
printf("%d,",i);
else
printf("%d,%d,",a[i],i);
}
}
最全的IT公司
面试题
集 CHM版的
Java
面试题
,J2EE
面试题
,.net
面试题
,PHP
面试题
,数据库
面试题
,英语面试,外企面试,软件测试
面试题
,Python
面试题
,Oracle
面试题
,MySql
面试题
,Web开发
面试题
,Unix
面试题
,程序员面试,网络技术
面试题
,网络安全
面试题
,Linux...
张孝祥整理的JAVA
面试题
宝典下载
这套
面试题
主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试。由于这套
面试题
涉及的范围很泛,很广,很杂,至少需要一个月的时间才能消化和...
2015Java开发软件工程师
面试题
(必备最全)
绝对的史上目前为止最全的Java工作人员
面试题
集,Java
面试题
,oracle,ms sql数据库
面试题
,linux
面试题
,web服务器
面试题
C/C++程序设计员应聘常见面试试题深入剖析
面试题
的目的并不在于提供求职指导,而是从技术上分析
面试题
的内涵。许多
面试题
看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的 strcpy 函数都可看出面试者在技术上究竟达到了怎样的...
各个公司
面试题
(百度、华为、中兴、烽火科技等)
本压缩包文件“各个公司
面试题
(百度、华为、中兴、烽火科技等)”包含了这些知名IT公司的
面试题
目,对于准备面试的朋友们来说,是一个宝贵的参考资料。 首先,我们来看看“百度”的
面试题
。百度作为中国互联网巨头...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章