1、个面的骰子 标上1 2 3 4 5 6 投掷8次 求出现和的概率最大的数 ,就是这8次的和最有可能是多少

应该是28。

(1+2+3+4+5+6)/6=3.5

3.5 * 8 =28

另一种方法是:投两次,这两次的和出现次数最多的7,7*4=28

2、全排列 如1 2 3 有 3!词排列方式 输入是:1~50的整数,参数是[a,b),如[33,36)就是 33 34 35

#include<iostream>

using namespace std;

void arrange(int arr[], int k, int beginPos)
{
     if(beginPos == k)
     {
              for(int i = 0; i < k; i++)
              {
                      cout << arr[i] << " ";
              }
              cout << endl;
     }
    
     for(int i = beginPos; i < k; i++)
     {
             swap(arr[beginPos], arr[i]);
             arrange(arr, k, beginPos + 1);
             swap(arr[beginPos], arr[i]);
     }
}

void printZuhe(int a, int b)
{
     int num = b - a;
     int array[num];
     for(int i = a; i < b; i++)
     {
             array[i - a] = i;
     }
     arrange(array, num, 0);
}

int main()
{
    printZuhe(33, 36);
    system("pause");
    return 0;
}

题目描述:平面上给你n个点,让你求一个点,到这n点的距离和最小。

解题报告:

先写好一个判定函数double judge(pint id),表示id这个点的权值,这里的话,权值就是id到其他所有点的距离和。

随即在给定的范围内生成NUM个点,挑选一个最大的步长T(要求答案点距离随即生成的点小于T)。

下面就开始循环了:

1:对于每一个T,扫描第i个随即生成的点。

2:以这个点为中心,上下左右为T的方框内,随机生成TIM个点(模拟这个点偏移T的距离)。

3:把i点更新为这TIM点中权值最优的。

4:T *= deta,缩小,如果小于给定的MIN跳出,否则继续从1开始。

5:最后从NUM点中选取最优的即可。

代码如下:

#include<iostream>

#include<cstring>

#include<vector>

#include<algorithm>

#include<cmath>

#include<cstdio>

using namespace std;

#define NUM 20 //随机生成点的个数

#define TIM 20 //每个点移动的次数

#define RD 1000 //随即乘生成0~1的,精度为1/RD的小数

#define MIN 0.1 //步长T的最小值,比最后坐标要求的精度小一些

#define deta 0.7 //每次循环步长T的缩小程度

int n; //总点数,复杂度X * NUM * TIM * n; X为T到MIN的循环次数,由deta决定

struct pint

{

double x, y, val;

pint(){}

pint(double x, double y):x(x),y(y){}

}jeo[200], tar[NUM];

double dist(pint a, pint b)

{return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));}

//判定函数

double judge(pint id)

{

double sum = 0;

for(int i = 0; i < n; i++)

sum += dist(id, jeo[i]);

return sum;

}

//获取0~1的小数

double GetDouble()

{return (rand() % (RD + 1)) * 1.0 / RD;}

//获取左下角为a,右上角为b内的随机点

pint GetRand(pint a, pint b)

{

pint tar = pint(a.x + (b.x - a.x) * GetDouble(), a.y + (b.y - a.y) * GetDouble());

tar.val = judge(tar);

return tar;

}

//模拟退火主过程 //MAXT为步长

void jeogia(double MaxT)

{

for(double T = MaxT; T >= MIN; T *= deta)

for(int i = 0; i < NUM; i++) for(int j = 0; j < TIM; j++)

{

pint tmp = GetRand(pint(tar[i].x - T, tar[i].y - T), pint(tar[i].x + T, tar[i].y + T));

if (tmp.val < tar[i].val) tar[i] = tmp;

}

}

int main()

{

while(scanf("%d", &n) != EOF)

{

pint a = pint(100000, 100000), b = pint(-100000, -100000);

for(int i = 0; i < n; i++)

{

scanf("%lf%lf", &jeo[i].x, &jeo[i].y);

a.x = min(a.x, jeo[i].x); a.y = min(a.y, jeo[i].y);

b.x = max(b.x, jeo[i].x); b.y = max(b.y, jeo[i].y);

}

//随机生成NUM个点

for(int i = 0; i < NUM; i++) tar[i] = GetRand(a, b);

//传入步长

jeogia(max(b.y - a.y, b.x - a.x));

double ans = -1;

for(int i = 0; i < NUM; i++)

if (ans < 0 || tar[i].val < ans)

ans = tar[i].val;

printf("%.0f\n", ans);

}

return 0;

}

度为k的树,度为1的节点个数为n1,度为2的节点个数为n2...度为k的节点个数为nk,求叶子结点的个数

n1+2n2+...+knk -(n1+n2 + ... + nk) +1
=  n2+2n3+...+(k-1)nk + 1

http://www.isstudy.com/visualc/3087.html

转载于:https://www.cnblogs.com/xulb597/archive/2012/05/28/2522450.html

6个面的骰子 标上1 2 3 4 5 6 投掷8次 求出现和的概率最大的数 ,就是这8次的和最有可能是多少...相关推荐

  1. 同时投掷两个不同面的骰子

    12.4.5 同时投掷两个不同面的骰子 假设我们同时投掷一个6面骰子和8面骰子,掷5000次,那结果如何呢?如图12-28所示.Jupyter Notebook (Anaconda) # 导入随机整数 ...

  2. 给定一个10位的整数组成的串,形式如: d1d2d3d4d5d6d7d8d9d10 。 其中最后的一位(即 )是校验和,其使用以下运算规则以前面的9位上的整数作为参数获得结果

    package Second;import java.util.InputMismatchException; import java.util.Scanner;public class Demo4 ...

  3. 寒假的时候,小明同学要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上。小明可以任意选择一个朋友的家开始访问,但是每次访问后他都必须回到出发点,然后才能去访问下一个朋友。

    寒假的时候,小明同学要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上.小明可以任意选择一个朋友的家开始访问,但是每次访问后他都必须回到出发点,然后才能去访问下一个朋友. 比如有4个朋友,对应 ...

  4. 键盘录入一个正整数,把它的各个位上的数字倒着排列形成一个新的整数并输出。 例如:12345 数出54321 78760 输出6787(0省去)

    package com.coffn.demos; /*** 4.键盘录入一个正整数,把它的各个位上的数字倒着排列形成一个新的整数并输出.例如:12345 数出54321 78760 输出6787(0省 ...

  5. 一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳n级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)

    青蛙跳阶级问题其实就是一个递归的问题 题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳n级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 先上解法再解释 pub ...

  6. 幼儿园小班上计算机课 作业内容是手口一致,幼儿园1-10数字手口一致,对物数数教案...

    活动名称 10以内的手口一致数数(正数.接着数) 教育目标 1.通过操作活动让孩子练习手口一致数数; 2.在操作活动中发展孩子的动手能力.口语表达能力. 教具组成 数学插板人手一套,教师演示板 活动过 ...

  7. Python 绘制中国地图并标上国家名

    直接使用cartopy库绘制中国以及周边国家的地图时,中国国界线有问题(藏南地区没有画到中国国界线内等)也没有九段线.下面的程序可以将国家标准国界线和九段线都添加到地图上,并标出国家名称 import ...

  8. 数据可视化——投掷两个6面的骰子

    from die_1 import Die import pygal# 创建2一个D6 die_1 = Die() die_2 = Die()# 扔几次骰子,并将结果存储在一个列表中,扔1000次 r ...

  9. 计算机上面的音乐,电脑上如何识别音乐

    电脑上如何识别音乐 我们都知道怎么在手机上使用软件来实现识别音乐的功能,但是在网上怎么识别呢.那么电脑上如何识别音乐呢?下面就让jy135小编来告诉大家吧,欢迎阅读. 首先打开midomi网站(htt ...

最新文章

  1. 简述CISCO防火墙透明模式
  2. js两个数组对象通过相同元素匹配筛选
  3. GridView导出到Excel和开源图表工具
  4. 今晚直播丨 RabbitMQ原理与常见问题处理
  5. Linux内核小笔记:spin_lock锁内不能使用sleep休眠
  6. JQuery点击收起,点击展开以及部分非空小验证
  7. 要抢足球教练饭碗!切尔西未来或将用上AI教练
  8. 20200715每日一句
  9. 系统 hosts 文件修改工具
  10. 计算机物理仿真,仿真物理实验室初中完整版
  11. pythonobject转int_python – Pandas:将dtype’object’转换为int
  12. 电脑cd,CD光盘如何翻录在电脑上 将CD复制到电脑上步骤的方法有哪些
  13. 网络安全——linux文本三剑客
  14. 全球及中国红外探测器芯片行业发展动态及投资应用前景调研报告2021-2027年
  15. mysql进阶(十九)SQL语句如何精准查找某一时间段的数据
  16. vue项目的导出功能
  17. 母线电容及其计算方法
  18. redis搭建三主三从架构
  19. 微信小程序canvas商品分享海报
  20. 4G军备竞赛:中兴华为领跑国内 三星独霸一方

热门文章

  1. [sed] linux sed 批量替换字符串-转
  2. 蓝桥杯 ALGO-23 算法训练 一元三次方程求解
  3. android wpa2 wifi,让Android WiFi支持中文
  4. mysql数据库查上一条下一条记录,mongodb查询当前记录的上一条和下一条
  5. Redis应用学习——Redis Cluster故障转移
  6. 分解模式 - 按业务领域分解模式划分微服务
  7. 分享:苹果APP更新上架被拒的另一种理由(Safety - Objectionable Content)
  8. Linux中如何通过命令行访问Dropbox
  9. 新手必看:揭秘德州扑克概率表
  10. Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持