高分求一数据算法

peterlee168 2007-12-05 02:42:11
ArrayList x = new ArrayList();
ArrayList y = new ArrayList();
x.Add("a");
x.Add("b");
x.Add("c");
x.Add("d");
...
y.Add("1");
y.Add("2");
...
两动态数组 X 和Y 数组内元素个数不定,有可能B大于A的个数 求一算法,用数组B的所有元素依次和A
组合如 x[0]+y[0] , x[1]+y[1],x[2]+y[2],x[3]+y[0],x[4]+y[1],x[5]+y[2] 如果X里的个数正好是Y个数的整数倍,就组合倍数次,如果非整数倍,剩余元素都和Y[0]组合。

...全文
178 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Q_282898034 2007-12-13
  • 打赏
  • 举报
回复
如果X里的个数正好是Y个数的整数倍,就组合倍数次,
题目果然说错了
peterlee168 2007-12-12
  • 打赏
  • 举报
回复
谢谢各位,问题己解决,. 大家提的算法我都测试了一下,其中大哥雁 godi 的算法比较接近.
wisdomqq 2007-12-11
  • 打赏
  • 举报
回复
听起来不复杂嘛
crossrowman 2007-12-10
  • 打赏
  • 举报
回复
用队列

[STAThread]
static void Main(string[] args)
{
ArrayList X = new ArrayList();
for( int i=0;i<5;i++)
{
X.Add(i);
}
ArrayList Y = new ArrayList();
for( int i=10;i<19;i++)
{
Y.Add(i);
}
Compages(X,Y);
Console.ReadLine();
}


private static void Compages(ICollection X, ICollection Y)
{
if(X.Count==0 || Y.Count==0)
return;
Queue QX = new Queue(X);
Queue QY = new Queue(Y);
int CountX = QX.Count;
int CountY = QY.Count;
int Count = CountX > CountY ?CountX:CountY;

for(int Index=0;Index<Count;Index++)
{
object x = QX.Dequeue();
object y = QY.Dequeue();
Console.WriteLine( "X={0} , Y={1}" ,x,y);
QX.Enqueue(x);
QY.Enqueue(y);
}
}
Q282898034 2007-12-10
  • 打赏
  • 举报
回复
如果X里的个数正好是Y个数的整数倍,就组合倍数次,

是倍数次还是X里的个数乘以倍数次?
peterlee168 2007-12-07
  • 打赏
  • 举报
回复
听起来好像并不是很复杂,但是你的:"就组合倍数次"是怎么组合呢?看你的实例:
x[0]+y[0],x[1]+y[1],x[2]+y[2],x[3]+y[0],x[4]+y[1],x[5]+y[2]
------------------------------------------------------------
没看出什么规律,你把规律说一下好吗?

用数组X的所有元素依次和Y组合
johnny_83 2007-12-06
  • 打赏
  • 举报
回复
up!!! zbjg
chuxue1342 2007-12-06
  • 打赏
  • 举报
回复
听起来好像并不是很复杂,但是你的:"就组合倍数次"是怎么组合呢?看你的实例:
x[0]+y[0],x[1]+y[1],x[2]+y[2],x[3]+y[0],x[4]+y[1],x[5]+y[2]
------------------------------------------------------------
没看出什么规律,你把规律说一下好吗?
zbjg 2007-12-05
  • 打赏
  • 举报
回复
int isint = x.length / y.length ;
int xalen = isint * y.lenth;
for(int i = 0;i < xalen; i++)
{
x[i] = x[i] + y[i % y.length];
}
for(int i = xalen; i< x.length;i++)
{
x[i] = x[i] + y[0];
}
longj 2007-12-05
  • 打赏
  • 举报
回复
ArrayList x = new ArrayList();
ArrayList y = new ArrayList();
ArrayList z = new ArrayList();

if (y.Count == 0) throw (new Exception("Null Y!"));
int cnt = (x.Count % y.Count == 0) ? x.Count : (x.Count / y.Count * y.Count);

for (int i = 0; i < cnt; i++)
{
z.Add(x[i] + y[i % y.Count]);
}

for (int j = cnt; j < x.Count; j++)
{
z.Add(x[j] + y[0]);
}
ETstudio 2007-12-05
  • 打赏
  • 举报
回复
int yF=y.Count;
for(int iCount=0;iCount<x.Count;i++)
{
x[iCount]+=y[icount%yF];
}
wuhq030710914 2007-12-05
  • 打赏
  • 举报
回复
先判断是不是整数倍,再循环嵌套的组合,想不到更简单的
lovvver 2007-12-05
  • 打赏
  • 举报
回复
这种算法写起来还是比较麻烦,要花一定的精力,最好还是自己去想一想,弄一弄的好。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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