2014
11-27

CodeMaker

Dreamwind is doing C++ homework……
“Write a program, enter 3 different integers a,b,c, output them in increasing order using their variable names.”
#include <stdio.h>

int a,b,c;
bool ok;

int main()
{
do
{
scanf("%d%d%d",&a,&b,&c);
ok=1;
if (a==b || a==c || b==c)
ok=0;
}while (ok);
if (a<b)
if (b<c)
printf("a<b<c\n");
else
if (a<c)
printf("a<c<b\n");
else
printf("c<a<b\n");
else
if (a<c)
printf("b<a<c\n");
else
if (b<c)
printf("b<c<a\n");
else
printf("c<b<a\n");
return 0;
}
Obviously, this program is very complex, but Dreamwind is satisfied with this. He prepares to solve similar question by using the same format. However, when the nubmer of integers if very large, the length of code by this format will be very long, so Dreamwind gives this code to you, hoping you can write a program which can create the code of some questions like “Enter n different integers a,b,c,…, output them in increasing order using their variable names.” automatically.
We can see that in Dreamwind’s format, the integers’ variable name will be a,b,c,…, and when judge whether the integers are different, the “if” will follow many sentence like (a==b) in some order. When compare the integers, he uses the least “if” so that every “if” and “else” is perfectly used. For each comparison, a and b will always be used first, and then c, and then d (if n is larger, see the Sample Output). Dreamwind never use “>” in this program, and in every “<” and “==” in the “if” sentence, the varible name on the left will always smaller than the one on the right.

There are some test cases. For each test case there is only one line with a integer n (2<=n<=8), the number of integers. There is one 0 in the end of the case.

There are some test cases. For each test case there is only one line with a integer n (2<=n<=8), the number of integers. There is one 0 in the end of the case.

4
0

#include <stdio.h>

int a,b,c,d;
bool ok;

int main()
{
do
{
scanf("%d%d%d%d",&a,&b,&c,&d);
ok=1;
if (a==b || a==c || a==d || b==c || b==d || c==d)
ok=0;
}while (ok);
if (a<b)
if (b<c)
if (c<d)
printf("a<b<c<d\n");
else
if (b<d)
printf("a<b<d<c\n");
else
if (a<d)
printf("a<d<b<c\n");
else
printf("d<a<b<c\n");
else
if (a<c)
if (b<d)
printf("a<c<b<d\n");
else
if (c<d)
printf("a<c<d<b\n");
else
if (a<d)
printf("a<d<c<b\n");
else
printf("d<a<c<b\n");
else
if (b<d)
printf("c<a<b<d\n");
else
if (a<d)
printf("c<a<d<b\n");
else
if (c<d)
printf("c<d<a<b\n");
else
printf("d<c<a<b\n");
else
if (a<c)
if (c<d)
printf("b<a<c<d\n");
else
if (a<d)
printf("b<a<d<c\n");
else
if (b<d)
printf("b<d<a<c\n");
else
printf("d<b<a<c\n");
else
if (b<c)
if (a<d)
printf("b<c<a<d\n");
else
if (c<d)
printf("b<c<d<a\n");
else
if (b<d)
printf("b<d<c<a\n");
else
printf("d<b<c<a\n");
else
if (a<d)
printf("c<b<a<d\n");
else
if (b<d)
printf("c<b<d<a\n");
else
if (c<d)
printf("c<d<b<a\n");
else
printf("d<c<b<a\n");
return 0;
}

2. for(int i=1; i<=m; i++){
for(int j=1; j<=n; j++){
dp = dp [j-1] + 1;
if(s1.charAt(i-1) == s3.charAt(i+j-1))
dp = dp[i-1] + 1;
if(s2.charAt(j-1) == s3.charAt(i+j-1))
dp = Math.max(dp [j - 1] + 1, dp );
}
}
这里的代码似乎有点问题？ dp(i)(j) = dp(i)(j-1) + 1;这个例子System.out.println(ils.isInterleave("aa","dbbca", "aadbbcb"));返回的应该是false

3. #include <cstdio>

int main() {