一个有趣的题目,看看如何用算法实现它

magelfly 2005-10-25 09:26:31
如:
Q1Q1Q1……Q1 M个
Q1Q2Q2……Q2 M个
Q1Q2Q3……Q3 ——
|
|
QnQnQn……Qn --
哈哈怎么实现啊。
...全文
483 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmmcd 2005-10-26
  • 打赏
  • 举报
回复
是不是想要这个效果:
#include <iostream.h>
int a[10];
void go(int l,int k,int m,int n){
int i;
if(k>n)
return;
for(i=0;i<l;i++)
cout<<'Q'<<a[i];
for(i=0;i<m;i++){
cout<<'Q'<<k;
}
cout<<endl;
a[l]=k;
go(l+1,k+1,m-1,n);
}

int main()
{
int i,n;
cin>>n;
for(i=1;n<=10 && i<=n;i++)
go(0,i,n,n);
return 0;
}

输入:
7
输出:
Q1Q1Q1Q1Q1Q1Q1
Q1Q2Q2Q2Q2Q2Q2
Q1Q2Q3Q3Q3Q3Q3
Q1Q2Q3Q4Q4Q4Q4
Q1Q2Q3Q4Q5Q5Q5
Q1Q2Q3Q4Q5Q6Q6
Q1Q2Q3Q4Q5Q6Q7
Q2Q2Q2Q2Q2Q2Q2
Q2Q3Q3Q3Q3Q3Q3
Q2Q3Q4Q4Q4Q4Q4
Q2Q3Q4Q5Q5Q5Q5
Q2Q3Q4Q5Q6Q6Q6
Q2Q3Q4Q5Q6Q7Q7
Q3Q3Q3Q3Q3Q3Q3
Q3Q4Q4Q4Q4Q4Q4
Q3Q4Q5Q5Q5Q5Q5
Q3Q4Q5Q6Q6Q6Q6
Q3Q4Q5Q6Q7Q7Q7
Q4Q4Q4Q4Q4Q4Q4
Q4Q5Q5Q5Q5Q5Q5
Q4Q5Q6Q6Q6Q6Q6
Q4Q5Q6Q7Q7Q7Q7
Q5Q5Q5Q5Q5Q5Q5
Q5Q6Q6Q6Q6Q6Q6
Q5Q6Q7Q7Q7Q7Q7
Q6Q6Q6Q6Q6Q6Q6
Q6Q7Q7Q7Q7Q7Q7
Q7Q7Q7Q7Q7Q7Q7
magelfly 2005-10-25
  • 打赏
  • 举报
回复
哈哈,集思广益啊
PMsg 2005-10-25
  • 打赏
  • 举报
回复
作业题吧……不难自己好好想想
du_fangfang1202 2005-10-25
  • 打赏
  • 举报
回复
靠~~~谁做出来有奖
magelfly 2005-10-25
  • 打赏
  • 举报
回复
假设N=6
第1轮转换
Q1Q1Q1……Q1
Q1Q2Q2……Q2
Q1Q2Q3……Q3
Q1Q2Q3Q4…Q4
Q1Q2Q3Q4Q5Q5
Q1Q2Q3Q4Q5Q6
Q2Q2Q2Q2Q2Q2
Q2Q3Q3Q3Q3Q3
Q2Q3Q4Q4Q4Q4
Q2Q3Q4Q5Q5Q5
……
netepic 2005-10-25
  • 打赏
  • 举报
回复
楼主是不是想表达这样的规律
假设N=6
第1轮转换
Q1Q1Q1……Q1
Q1Q2Q2……Q2
Q1Q2Q3……Q3
Q1Q2Q3Q4…Q4
Q1Q2Q3Q4Q5Q5
Q1Q2Q3Q4Q5Q6
然后再按相反规律变成Q6Q6Q6Q6Q6Q6Q ?
magelfly 2005-10-25
  • 打赏
  • 举报
回复
是这样的,1-n的数据是有序的,一共有n个Q,(Q1,Q2,Q3……Qn)
Q1Q1Q1……Q1 M个
Q1Q2Q2……Q2 M个
Q1Q2Q3……Q3 ——
|
Q2Q2Q2……Q2 M个
Q2Q3Q3……Q3 M个
Q2Q3Q4……Q4 M个
|
Q3Q3Q3……Q3 M个
Q3Q4Q4……Q4 M个
Q3Q4Q5……Q5 M个
|
|
|
QnQnQn……Qn --
loveliu0429 2005-10-25
  • 打赏
  • 举报
回复
楼主写的好象是有点问题吧
最后一行是不是有点太没规律了
rayxu 2005-10-25
  • 打赏
  • 举报
回复
UP顶
qfeng_zhao 2005-10-25
  • 打赏
  • 举报
回复
不知道要做什么
oo 2005-10-25
  • 打赏
  • 举报
回复
没看明白
xiaocai0001 2005-10-25
  • 打赏
  • 举报
回复
你想干什么啊?

不要效率的话, 用一个M重循环, 每个循环N次就可以了
M不确定的话可以用递归来解决
MITSMI 2005-10-25
  • 打赏
  • 举报
回复
这么简单一题
搞得大家都挂这儿
大家都闲得晃啊

看来it != i'm tired 了
liujun19801129 2005-10-25
  • 打赏
  • 举报
回复
应该可以满足你的要求!

#include<iostream.h>
void main()
{
int i,j,k,n,m=0;
cout<<"Put the number:";
cin>>n;
for (i=1;i<=n;i++)
{
for (j=i;j<=n;j++)
{
for (k=0;k<m;k++)
{
cout<<"Q"<<i+k;
}
for (k=m;k<n;k++)
{
cout<<"Q"<<j;
}
cout<<endl;
m++;
}
m=0;
}
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧