浅学Matlab:确定比赛的胜负问题
女朋友突然找我帮她做线代的期末大作业,说是要用 matlab 写篇论文。我倒也一下懵了,虽说我的专业和打代码能沾点边,但我目前也只不熟练地了解 C++一门语言(各位大佬原谅我这个小白大一新生吧),完全没了解过 matlab,不过听说 matlab 对于工科学生还挺实用的,于是趁着这个机会也浅学一下吧。限于 ddl,我的 matlab 学习就从针对这道题入手。
题目
用 C++来实现
拿到这题倒还感觉挺简单的,至少对于 C++来说是这样。我想着就先用 C++来实现先吧,正好可以理一下思路。(有点南辕北辙,各位看官可跳过)
#include<iostream>
using namespace std;int main()
{int n, **a, tmp, *b, *c, max, max_j;cout<<"请输入有几支参赛队伍";cin>>n;//申请动态空间并赋初值a = new int*[n];for (int i=0; i<n; i++)a[i] = new int [n];for (int i=0; i<n; i++)for (int j=0; j<n; j++)a[i][j]=0;//获取数据for (int i=0; i<n; i++){cout<<"请输入第"<<i+1<<"支队伍战胜的队伍"<<endl;cout<<"若战胜多支队伍,请用回车键隔开;若输入已完成,请输入0,然后输入回车;若一支队伍都没战胜,请输入0"<<endl;for (int j=0; j<n; j++){cin>>tmp;if (tmp!=0){a[i][j]=tmp;}elsebreak;}}
/**for (int i=0; i<n; i++){for (int j=0; j<n; j++){cout<<a[i][j]<<' ';}cout<<endl;}
**///获取直接胜数据b = new int [n];for (int i=0; i<n; i++)b[i]=0;for (int i=0; i<n; i++){for (int j=0; j<n; j++){if (a[i][j]!=0)b[i]++;elsebreak;}}//获取间接胜数据c = new int [n];for (int i=0; i<n; i++)c[i]=0;for (int i=0; i<n; i++){for (int j=0; j<n; j++)if (a[i][j]!=0)c[i]+=b[a[i][j]-1];//注意,数组中的行数和输入的行数不是一个东西}
/**for (int i=0; i<n; i++)cout<<b[i]<<' ';cout<<endl;for (int i=0; i<n; i++)cout <<c[i]<<endl;
**///排序并输出for (int i=0; i<n; i++){max = -1;max_j = -1;for (int j=0; j<n; j++){if ((b[j]>max)||(b[j]==max&&c[j]>c[max_j])){max = b[j];max_j = j;}}cout<<"排名第"<<i+1<<"名的队伍是"<<max_j+1<<endl;b[max_j]=-1;}//删除动态申请的空间for (int i=0; i<n; i++)delete a[i];delete b;delete c;return 0;
}
这段代码随手写的,大佬们随便笑话就可以了/捂脸。
不过写完 C++后怎么样呢?matlab 可以直接运行 cpp 程序呢?显然不太行。根据搜索引擎,可以通过接口让 matlab 运行 C++程序,但考虑到这就不是 matlab 编程了,也不知道她的老师认不认。至于有没有什么方法可以把 C++直接转换为 matlab 代码,好像也没有(不过把 matlab 代码转换为 C++代码反而是 matlab 软件自带的。
没办法,只能从头一点一点学 matlab,南辕北辙搞了个 C++程序倒也是没办法。强烈安利官方课程,就入门而言比看书看视频强太多了
输入命令
基本命令倒也不难。值得注意的是:
1.它可以实时交互
,给个命令就返回结果
2.每行代码结尾也不用加分号
(事实上分号另有作用,这在以后会介绍)
3.右边的工作区会显示各个变量的信息
4.不用定义变量,需要用某个新变量时直接用就可以了
更详细一点的说明如下:
简单命令
想算 3*5 就直接输入3*5
就可以了,系统会自动创建一个ans
变量来存储结果15
想把 3*5 这个运算结果给变量 m,不用定义变量可以直接写m = 3*5
至于变量的运算和变量之间的赋值就很简单了,大家看着示例便可以意会了
分号的作用
前面提到 matlab 中的命令不用像 C++中那样每行都要加分号,而且 matlab 会实时对你的命令做出反应,那 matlab 中的行末分号有什么用呢?如何让 matlab 不要实时对你的命令做出反应呢?答案已经暗示的很明显了,那就是在行末加分号可以让 matlab 不要实时对你的命令做出反应,不过在工作区中还是可以看到变量发生了变化。
重新调用以前的命令
这是我觉得最神奇的一点,大家现在按 大家好,我是北海. 刚开始参与数学建模的同学,往往会面临一个问题:做数模离不开编程,而matlab和python都挺适合做数模的,究竟是学matlab还是python? 本文就给大家分析一下matla ... <浅谈MATLAB在数值积分中的应用.doc>由会员分享,可免费在线阅读全文,更多与<浅谈MATLAB在数值积分中的应用>相关文档资源请在帮帮文库(www.woc88.com) ... 嘲 浅谈matlab在企业人力资源绩效评价体系中的应用 杨 旺 (中南财 经政法大学统计与数学学 院 湖北 ·武汉 430070) 摘 要 本 文主要介绍 了企业人力资源管理的绩效评价体 系中常用的两 ... 在hadoop生态越来越完善的背景下,集群多用户租用的场景变得越来越普遍,多用户任务下的资源调度就显得十分关键了.比如,一个公司拥有一个几十个节点的hadoop集群,a项目组要进行一个计算任务,b项目 ... JavaScript是互联网上最流行的脚本语言,可广泛用于服务器.PC.笔记本电脑智能手机等设备: 对事件的反应: <!DOCTYPE html> <html> <hea ... matlab拔河比赛 Description: 描述: This is a standard interview problem to divide a set of number to two di ... 女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 python 中 functio ... TencentOS浅学过程记录 前言 一.RTOS 二.学习资料来源 三.初步学习过程中的疑难问题解决 任务调度以及轮询时间片 消息队列与邮箱队列 互斥锁 任务中为什么一定要加while(1)循环 内 ... Cross-Attention in Transformer Architecture 最近,CrossViT让我所有思考,这种能过够跨膜态的模型构建?浅学一下吧! 目录 1.Cross attent ...
浅学Matlab:确定比赛的胜负问题相关推荐
最新文章
热门文章