填数游戏

andy2u 2010-02-28 05:44:43
填数游戏大致思路是这样的,在一个方程式中找出一个未知求解(包括运算符)。

也就是说要完成以下三种情况:

1.未知数求解:16 + ? = 27 ;

2.运算符求解:12 ? 5 = 7 ;

3.运算结果求解:7 x 6 = ? .

思路:a X b = r; 其中a,b,r是整数;X是加、减、乘、除运算符.

然后a,b,r,X之间只有一个是求知的。

谢谢大家帮忙求解下。
...全文
256 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy2u 2010-03-01
  • 打赏
  • 举报
回复
引用 12 楼 musiclee 的回复:
这道题是4元(abxr)已知3元求第未知元,不难 就是写起来比较麻烦而已,给你个我刚程序吧 呵呵
Java codepublicclass test4 {/**
*@param args*/publicstaticvoid main(String[] args) {// String a="3";// String b="5";// String r="15";// int num=2;// System.out.println("已知abr求x x为"+XX(a, "", b, r, num));
String a="4";
String x="*";
String b="6";int num=4;
System.out.println("已知axb求r r为"+XX(a, x, b,"", num));

}publicstatic String XX(String a, String x, String b, String r,int num) {// num表示要求a(1),x(2),b(3),r(4)中的哪个 String reString="";int res=0;if (num==2) {int aI=Integer.parseInt(a);int bI=Integer.parseInt(b);int rI=Integer.parseInt(r);if(aI+bI==rI){
reString="+";
}elseif(aI-bI==rI) {
reString="-";
}elseif(aI*bI==rI){
reString="*";
}elseif(aI/bI==rI){
reString="/";
}
}else {switch (num) {case1: {//求aint bI=Integer.parseInt(b);int rI=Integer.parseInt(r);
res=getRes(bI,rI,x,1);
reString=String.valueOf(res);
}break;case3: {//求bint aI=Integer.parseInt(a);int rI=Integer.parseInt(r);
res=getRes(aI,rI,x,3);
reString=String.valueOf(res);
}break;case4: {int aI=Integer.parseInt(a);int bI=Integer.parseInt(b);
res=getRes(aI,bI,x,4);
reString=String.valueOf(res);
}break;default:
System.out.println("error!");return"error";
}

}return reString;
}publicstaticint getRes(int i,int j,String sign,int num)
{//num表示是求abr 134 如果是求 a或b 则i表示a或b ,j表示 rint res=0;if(num==4)//求r i表示a,j表示b {if(sign.equals("+"))
{
res=i+j;
}elseif(sign.equals("-")){
res=i-j;
}elseif(sign.equals("*")){
res=i*j;
}elseif(sign.equals("/")){
res=i/j;
}
}elseif(num==3){//求b i表示a j表示rif(sign.equals("+"))
{
res=j-i;
}elseif(sign.equals("-")){
res=i-j;
}elseif(sign.equals("*")){
res=j/i;
}elseif(sign.equals("/")){
res=i/j;
}
}elseif(num==1){//求a i表示b j表示rif(sign.equals("+"))
{
res=j-i;
}elseif(sign.equals("-")){
res=i+j;
}elseif(sign.equals("*")){
res=j/i;
}elseif(sign.equals("/")){
res=j*i;
}
}return res;
}
}



老大谢谢,你太强悍了
wyasd456456 2010-02-28
  • 打赏
  • 举报
回复
...............
musiclee 2010-02-28
  • 打赏
  • 举报
回复
这道题是4元(abxr)已知3元求第未知元,不难 就是写起来比较麻烦而已,给你个我刚程序吧 呵呵

public class test4 {

/**
* @param args
*/
public static void main(String[] args) {
// String a="3";
// String b="5";
// String r="15";
// int num=2;
// System.out.println("已知abr求x x为"+XX(a, "", b, r, num));

String a="4";
String x="*";
String b="6";
int num=4;
System.out.println("已知axb求r r为"+XX(a, x, b, "", num));

}

public static String XX(String a, String x, String b, String r, int num) {
// num表示要求a(1),x(2),b(3),r(4)中的哪个
String reString="";
int res=0;
if (num == 2) {
int aI=Integer.parseInt(a);
int bI=Integer.parseInt(b);
int rI=Integer.parseInt(r);
if(aI+bI==rI){
reString="+";
}else if(aI-bI==rI) {
reString="-";
}else if(aI*bI==rI){
reString="*";
}else if(aI/bI==rI){
reString="/";
}
} else {
switch (num) {
case 1: {//求a
int bI=Integer.parseInt(b);
int rI=Integer.parseInt(r);
res=getRes(bI,rI,x,1);
reString=String.valueOf(res);
}
break;
case 3: {//求b
int aI=Integer.parseInt(a);
int rI=Integer.parseInt(r);
res=getRes(aI,rI,x,3);
reString=String.valueOf(res);
}
break;
case 4: {
int aI=Integer.parseInt(a);
int bI=Integer.parseInt(b);
res=getRes(aI,bI,x,4);
reString=String.valueOf(res);
}
break;
default:
System.out.println("error!");
return "error";
}

}

return reString;
}

public static int getRes(int i,int j,String sign,int num)
{
//num表示是求abr 134 如果是求 a或b 则i表示a或b ,j表示 r
int res=0;
if(num==4) //求r i表示a,j表示b
{
if(sign.equals("+"))
{
res=i+j;
}else if(sign.equals("-")){
res=i-j;
}else if(sign.equals("*")){
res=i*j;
}else if(sign.equals("/")){
res=i/j;
}
}else if(num==3){ //求b i表示a j表示r
if(sign.equals("+"))
{
res=j-i;
}else if(sign.equals("-")){
res=i-j;
}else if(sign.equals("*")){
res=j/i;
}else if(sign.equals("/")){
res=i/j;
}
}else if(num==1){//求a i表示b j表示r
if(sign.equals("+"))
{
res=j-i;
}else if(sign.equals("-")){
res=i+j;
}else if(sign.equals("*")){
res=j/i;
}else if(sign.equals("/")){
res=j*i;
}
}

return res;
}
}
良言相告 2010-02-28
  • 打赏
  • 举报
回复
伪代码,用简单的IF语句来完成
a X b = r

// 解析式子 分得给 a X b r赋值
if (运算符已知){
if(r 未知) r = calc(a, b, X);
else if (a 未知) a = calc(r, b, getInverseOp(X));//X的逆运算
else if (b 未知){
if(X == '+' || X == '*'){
b = calc(r, a, getInverseOp(X));
}else{
b = calc(r, a, X);
}
}
}
// 运算符未知
else{
for(char x : '+=*/'){
if(r == calc(a, b x){
X = x;
}
}
}

// 这个方法进行两个数的操作
double calc(double a, double c, char op){
}
// 这个方法获得OP的逆运算,+返回-,*返回/
double getInverseOp(char op){
}
xuexi100 2010-02-28
  • 打赏
  • 举报
回复
andy2u 2010-02-28
  • 打赏
  • 举报
回复
引用 3 楼 jjjj122 的回复:
a,b,r,X之间只有一个是求知的是什么意思?


打错了,a,b,r,X之间只有一个是未知的.
andy2u 2010-02-28
  • 打赏
  • 举报
回复
比如:16 + ? = 27 ; ? =" 9"

12 ? 5 = 7 ; ?="x",乘号

7 x 6 = ? . ?="42";
andy2u 2010-02-28
  • 打赏
  • 举报
回复
就是用Java写一段代码:其结果包含以下三种情况:

1.未知数求解:16 + ? = 27 ;

2.运算符求解:12 ? 5 = 7 ;

3.运算结果求解:7 x 6 = ? .

就是得出问号(?)的值
xuexi100 2010-02-28
  • 打赏
  • 举报
回复

楼主是啥意思呢!不明白啊;
JavaAlpha 2010-02-28
  • 打赏
  • 举报
回复
不大明白楼主 你说的具体是什么意思?
Defonds 2010-02-28
  • 打赏
  • 举报
回复
引用楼主 andy2u 的回复:
填数游戏大致思路是这样的,在一个方程式中找出一个未知求解(包括运算符)。

也就是说要完成以下三种情况:

1.未知数求解:16 + ? = 27 ;

2.运算符求解:12 ? 5 = 7 ;

3.运算结果求解:7 x 6 = ? .

思路:a X b = r; 其中a,b,r是整数;X是加、减、乘、除运算符.

然后a,b,r,X之间只有一个是求知的。

谢谢大家帮忙求解下。
想干啥
jjjj122 2010-02-28
  • 打赏
  • 举报
回复
a,b,r,X之间只有一个是求知的是什么意思?
lnfszl 2010-02-28
  • 打赏
  • 举报
回复
要找最优算法?还是想干啥
knightzhuwei 2010-02-28
  • 打赏
  • 举报
回复
只有一个运算符?这个很简单啊

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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