一忘勿记 2016-06-27 01:53 采纳率: 100%
浏览 1232
已采纳

一道随机算法题,C#,在线等哟

如题:
a,b,c,d为变量,A为常量。a,b,c,d的取值在1-36(均可等)之间
表达式为a+b+c+d=A,a!=b,b!=c,c!=d
已知A,现任意随机出一组a,b,c,d

举个栗子:
A=72
a=24,b=14,c=5,d=29
...
不可以是
a=24,b=24,c=18,d=6
...

  • 写回答

6条回答 默认 最新

  • pcyifei0106 2016-06-27 03:51
    关注

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Collections;

    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

        private int GetAnswer(int end)
        {
            int num;
            Random random = new Random();
            num = random.Next(end);
            return num;
        }//得到随机数字
        private bool IsSame(int num_1,int num_2,int num_3,int num_4)
        {
            bool rtn = false;
            ArrayList list = new ArrayList();
            list.Add(num_1);
            list.Add(num_2);
            list.Add(num_3);
            list.Add(num_4);
    
            for (int i = 0; i <= list.Count-1;i++)
            {
                for (int j = i+1; j <= list.Count-1; j++)
                {
                    if (list[i] == list[j])
                    {
                        rtn = false;
                    }
                    else
                    {
                        rtn = true;
                    }
                }
            }
                return rtn;
        }//判断是否有重复
    
        private void GetRight()
        {
            int anum, bnum, cnum, dnum;
    
                anum = GetAnswer(Convert.ToInt16(txtA.Text));
                bnum = GetAnswer(Convert.ToInt16(txtA.Text)-anum);
                cnum = GetAnswer(Convert.ToInt16(txtA.Text) - anum-bnum);
                dnum = Convert.ToInt16(txtA.Text) - anum - bnum-cnum;
    
            if(IsSame(anum,bnum,cnum,dnum))
            {
                lbla.Text = anum.ToString();
                lblb.Text = bnum.ToString();
                lblc.Text = cnum.ToString();
                lbld.Text = dnum.ToString();
            }
            else
            {
                anum = GetAnswer(Convert.ToInt16(txtA.Text));
                bnum = GetAnswer(anum);
                cnum = GetAnswer(bnum);
                dnum = Convert.ToInt16(txtA.Text) - anum - bnum - cnum;
            }
    
    
                lbla.Text=anum.ToString();
                lblb.Text=bnum.ToString();
                lblc.Text=cnum.ToString();
                lbld.Text=dnum.ToString();
    
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (txtA.Text == "" || txtA.Text == null)
            {
                MessageBox.Show("请输入数据A!");
                txtA.Focus();
            }
            else
            {
                GetRight();
            }
        }
    }
    

    }
    没有看到“a,b,c,d的取值在1-36(均可等)” 这个条件 其他的 都还好 要是需要原工程加我qq1101559491

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀