标题:[讨论]第九次编程题目,谢谢大家的支持.继续关注.
只看楼主
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 
第一个思路:
10 前面加10得1010(跟后面加10一样)前面加1后面加0得1100,结果是3*1-1===2个
1010 1100 1010前后加10得101010 前加1后加0的110100
1100前加10得101100 后加1得110010 前加1后加0得111000,结果是3*2-1=5个
101010 前后加10得10101010 前加1后加0的11010100
110100 前10得10110100 后10得11010010 前1后0得11101000
101100 前10得10101100 后10得10110010 前1后0的11011000
110010 前10的10110010 后10得11001010 前1后0得11100100
111000 前10得10111000 后10得11100010 前1后0得11110000 结果是3*5-1个

依次类推就可以,代码还没写,先找到了规律,是从一串数的中间变化开始考虑两头

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-27 15:22
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
第一个题目要是用第归来写的话到不是很难,定义数组s[N],s[i]中放的数字不能超过i+1,同时前i项的和要小于i+1,
和排序的算法应该是一样的

2007-03-27 16:04
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 
第一个,最多能到21个1和0
#include "stdio.h"
main()
{
long n,i,j;
while(EOF!=scanf("%ld",&n))
{
j=1;
--n;
if(n<1)continue;
for(i=0;i<n;i++)
j=3*j-1;
printf("%ld\n",j);
}
}

[此贴子已经被作者于2007-3-27 17:50:45编辑过]


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-27 16:18
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
楼上厉害,只好佩服了,数据益出到是很好办,主要是要找出规律,我想了好久都没有看出来这个规律

2007-03-27 17:05
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 

#include<stdio.h>/*要是3个数组好不够就用4个*/
void main()
{
int n,i;
long int k[3]={0,0,2};
while(EOF!=scanf("%d",&n))
{
if(n==1)
printf("1\n");
else if(n==2)
printf("2\n");
else
{
n-=2;
while(n--)
{
k[2]=3*k[2]-1;
if((k[2]/1000000)||k[1])
{
k[1]=k[1]+k[2]/1000000;
k[1]=3*k[1]-1;
}
if((k[1]/1000000)||k[0])
{
k[0]=k[0]+k[1]/1000000;
k[0]=3*k[0]-1;
}
}
for(i=0;i<3;i++)
{
if(k[i]!=0)
printf("%ld",k[i]);
}
printf("\n");

}
k[0]=k[1]=0;
k[2]=2;
}
}


2007-03-27 17:24
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 
你的也不错啊,我运行了一下跟我的结果不一样,原来是我忘了给n减1了

我也是想了很多办法,最后头都想疼了,一直在依次排除上想,后来看不行干脆倒着想,才看出给前后加10的方法

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-27 17:42
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 
另外你的代码在地14后就开始在得到的结果前有其他数据了,比如15 结果多了1位5 2391485 16就在前面多2个数,17就前面多三个数

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-27 17:54
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 

老兄你完全和我一模一样,昨天晚上11点看到题目之后宿舍断电,睡觉都在想,早上7点就起来开电脑,一开始我都用12楼的办法,我写了第归,运行速度超慢,都没好意思发上来,于是又想把第归写成非第归,结果速度还是超慢,刚开始我也不明白你的思路,后来用笔比画了以下,就豁然开朗了.
以后大家多交流交流.
这期好冷,就那么几个人.看来大家都是上课去了
(这应该不是灌水吧?)


2007-03-27 18:13
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 
恩,多交流
真羡慕你,我是回不到学生时代了

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-27 18:18
玫瑰花的刺
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-3-26
得分:0 
13楼厉害,这样的规律也被你给找到了,我想了整整一下午也没有想出来,高手就是高手,菜鸟就是菜鸟.
2007-03-28 15:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-126858-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.414575 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved