首页 新闻 搜索 专区 学院

求一个算法。请童鞋们帮忙

0
[待解决问题]

例如:
输入输入一串数字 :      数字可以是没有规律的,也可以是规律的。
1,2,3,4,5,6,7,8,9或者是不规律的 12,50,2,16,87,14,15,19,50
 
如 输入 1  输出 1 
  输入 2  输出 2  
  输入 3  输出 3 
  输入 4  输出 1  
  输入 5  输出 2 
  输入 6  输出 3  
  输入 7  输出 1  
  输入 8  输出 2 
  输入 9  输出 3  
  .............
  输入n   输出 n
后面的依次类推,输出数字的每等于3,又从输出1开始。输入的数字可以是无序也可以是有序的.
  还例如:
   输入 12  输出 1 
  输入 50  输出 2  
  输入 2   输出 3 
  输入 16  输出 1  
  输入 87  输出 2 
  输入 14  输出 3  
  输入 15  输出 1  
  输入 19  输出 2 
  输入 50  输出 3  
  .............
  输入n   输出 n

这样的,算法该如何实现。。。??谢谢

问题补充: 意思就是:从输入开始算,输入第一个数字输出1.输入第二个数字输出2,输入第三个数字输出3,然后输入第四个数字友输出1,输入第五个数字输出2,输入第六个数字输出3,每输入三个数字,输出又从1开始依次类推。。。算法求解。。。。。。。
lovemc的主页 lovemc | 初学一级 | 园豆:13
提问于:2011-03-17 15:22
< >
分享
所有回答(8)
0

看上去是……

List<int> inputs =new List<int>();
IEnumerator
<int> enumerator =null;
while (true)
{
    int number = Convert.ToInt32(Console.ReadLine());

    if (enumerator ==null)
    {
        // 前面还没遇到过3,输入啥就输出啥
        inputs.Add(number);
    }
    else
    {
        // 已经遇到过3了,不用管输入的是啥,只要inputs不断循环就行
        if (!enumerator.MoveNext())
        {
            enumerator.Reset();
            enumerator.MoveNext();
        }
        Console.WriteLine(
"output: {0}", enumerator.Current);
    }

    if (number ==3)
    {
        // 如果是3,创建enumerator,从此不再管了
        enumerator = inputs.GetEnumerator();
        Console.WriteLine(
"output: {0}", number);
    }
}
Gray Zhang | 园豆:17610 (专家六级) | 2011-03-17 15:49
意思就是:从输入开始算,输入第一个数字输出1.输入第二个数字输出2,输入第三个数字输出3,然后输入第四个数字友输出1,输入第五个数字输出2,依次类推。。。算法求解。。。。,你那个不正确
支持(0) 反对(0) lovemc | 园豆:13 (初学一级) | 2011-03-17 16:18
每输入三个数字,输出又从1开始,,,依次类推
支持(0) 反对(0) lovemc | 园豆:13 (初学一级) | 2011-03-17 16:20
那就和输入完全没有关系了,只管1-2-3-1-2-3-1这样输出好了,不用管输入的是什么
支持(0) 反对(0) Gray Zhang | 园豆:17610 (专家六级) | 2011-03-17 16:23
是这样的。
支持(0) 反对(0) lovemc | 园豆:13 (初学一级) | 2011-03-18 15:37
0
for(int i=0;i<arr.length;i++)
{
if(arr[i]==input)
return i%3
}
敏而好学 | 园豆:147 (初学一级) | 2011-03-17 17:33
0
int n=1;
List<object> list1=new List<object>()
;
List<object> list2=new List<object>(); 

while(true)
{
string numbervalue=Console.ReadLine();
if(numbervalue=="exit")
break;
int numerkey=(n%3==0?3:n%3);
list1.Add(numbervalue);
list2.Add(numberkey);
n
++;
}
for(int flag=1;flag<=n;flag++)
{
Console.Write(list1[flag].ToString());
Console.Write(
":");
Console.Write(list2[flag].ToString());
Console.WriteLine();
}
Console.ReadKey();
blueker_li | 园豆:20 (初学一级) | 2011-03-17 19:09
0

做个计数器,比如说i

int i = 1;
while(1)
{
  //输入操作
  if(i >= 4)
  i
= 1;
  //输出操作
  i++;
}
Rusty's code | 园豆:410 (菜鸟二级) | 2011-03-18 09:24
0

求余,能被3整除的输出3,不能被3整除的输入余数就可以

技术新手 | 园豆:125 (初学一级) | 2011-03-18 16:37
0

好简单啊 !

设定一个计数器 i   输入一个数 就自加1 

然后输出 i%3   i余3  就 好了   就是 输出  i对3 的余数。

Dictionary | 园豆:215 (菜鸟二级) | 2012-01-21 00:22
0

int i=0;

while(i < int.Maxvalue)

{

string strInput = Console.ReadLine();
if(strInput == "exit")
  break;
Console.WriteLine(i%3+1);

++i;

}

Lucien.Bao | 园豆:207 (菜鸟二级) | 2012-01-30 10:19
0

不管输入。只管输出。123,123,123。。。好像没难度哦。。。

int i = 0;

if (输入项*0==0){

i++;

output i%3;

巧克力猪 | 园豆:212 (菜鸟二级) | 2012-08-11 15:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册