需要帮助找到复发关系

时间:2014-03-14 06:16:05

标签: dynamic-programming

你很高兴,因为你进入了下一轮非常重要的编程竞赛。你希望你最好的朋友知道你有多开心。因此,你要给他发送很多笑脸表情符号。给你一个int微笑:你要发送的表情符号的确切数量。

您已在聊天中输入了一个表情符号。然后,你意识到打字很慢。相反,您将使用复制,粘贴以及可能的一些删除来生成剩余的表情符号。

您只能执行三种不同的操作:

  • 将您当前拥有的所有表情符号复制到剪贴板中。
  • 从剪贴板粘贴所有表情符号。
  • 从邮件中删除一个表情符号。

每个操作只需一秒钟。复制将替换剪贴板的旧内容。粘贴不会清空剪贴板。您不能仅复制已有的表情符号的一部分。您不能从剪贴板中删除表情符号。

返回可以将一个初始表情符号转换为笑脸表情符号的最小秒数。

如何找到此问题的递归关系?

1 个答案:

答案 0 :(得分:0)

使用此代码并根据此程序的输出添加秒数。无限循环的错误可能会纠正它。

/*  Input :   95 Output : 64,16,8,4,2,1
    Input :   69 Output : 64,4,1
    Input :  277 Output : 256,16,4,1 
    Input :    4 Output : 4
    Input :    1 Output : 1
    Input : 1042 Output : 1024,16,2
*/ 
import java.util.Scanner;
class Emotions
{
    public static void main(String args[])
    {
        Scanner a = new Scanner(System.in);
        System.out.print("Enter no. of Emotions : ");
        int emo = a.nextInt();
        value(emo);
    }
    public static void value(int x)
    {   
        int emo = x;
        int n = 1;  
        do {
        n = n * 2;
        }while(emo > n);
        n = n/2;
        System.out.println(n);
        while((emo - n) != 1)
        {
            value(emo-n);
        }   
    }

}