本文主要是介绍概率、期望,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
UVA1636 决斗 Headshot
#include <bits/stdc++.h>
using namespace std;
char s[110];
int shoot, no, len;
int main()
{while(scanf("%s", &s)!=EOF){shoot=0;no=0;len=strlen(s);s[len]=s[0]; for(int i=0; i<len; ++i){if(s[i]=='0'){no++; //没有子弹的弹巢数if(s[i+1]=='0'){shoot++; //下一个弹巢也没子弹, 直接射击也没有子弹 }}}//转一下, 没有子弹的概率为 no*no/len//直接射击没有子弹的概率为shoot if(no*no==len*shoot){printf("EQUAL\n");} else if(no*no>len*shoot){printf("ROTATE\n");}else{printf("SHOOT\n");}}return 0;
}
P4316 绿豆蛙的归宿
#include <bits/stdc++.h>
using namespace std;
int n, m, u, v;
double w, ans;
bool vis[100010];
struct node
{int to;double dis;
}asd;
vector<node> a[100010];
//从x出发, 当前走了curdis,总共经过点的分支乘积
void dfs(int x, double curdis, double p)
{if(x==n){ans+=curdis/p;return;}vis[x]=true;int num=a[x].size();for(int i=0; i<num; ++i){asd=a[x][i];v=asd.to;w=asd.dis;if(!vis[v]){dfs(v, curdis+w, p*num);}}vis[x]=false;
}
int main()
{//图的点数 n 和边数 mscanf("%d %d", &n, &m);for(int i=1; i<=m; ++i){scanf("%d %d %lf", &u, &v, &w);asd.to=v;asd.dis=w;a[u].push_back(asd);}dfs(1, 0, 1);printf("%.2lf", ans);return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n, m, u, v;
double w, ans;
bool vis[100010];
struct node
{int to;double dis;
}asd;
vector<node> a[100010];
//从x出发, 当前走了curdis,当前概率
void dfs(int x, double curdis, double p)
{if(x==n){ans+=curdis*p;return;}vis[x]=true;int num=a[x].size();for(int i=0; i<num; ++i){asd=a[x][i];v=asd.to;w=asd.dis;if(!vis[v]){dfs(v, curdis+w, p/num);}}vis[x]=false;
}
int main()
{//图的点数 n 和边数 mscanf("%d %d", &n, &m);for(int i=1; i<=m; ++i){scanf("%d %d %lf", &u, &v, &w);asd.to=v;asd.dis=w;a[u].push_back(asd);}dfs(1, 0, 1);printf("%.2lf", ans);return 0;
}
这篇关于概率、期望的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!