- 点击跳转专栏=>Unity3D特效百例
- 点击跳转专栏=>案例项目实战源码
- 点击跳转专栏=>游戏脚本-辅助自动化
- 点击跳转专栏=>Android控件全解手册
- 点击跳转专栏=>Scratch编程案例
- 点击跳转=>软考全系列
- 点击跳转=>蓝桥系列
👉关于作者
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单。
👉实践过程
需要所有整理的文档可底部卡片联系我,直接发压缩包。
😜风险度量
X星系的的防卫体系包含 n 个空间站。这 n 个空间站间有 m 条通信链路,构成通信网。
两个空间站间可能直接通信,也可能通过其它空间站中转。
对于两个站点x和y (x != y), 如果能找到一个站点z,使得:
当z被破坏后,x和y无法通信,则称z为关于x,y的关键站点。
显然,对于给定的两个站点,关于它们的关键点的个数越多,通信风险越大。
你的任务是:已知网络结构,求两站点之间的通信风险度,即:它们之间的关键点的个数。
输入数据第一行包含2个整数n(2 <= n <= 1000), m(0 <= m <= 2000),分别代表站点数,链路数。
空间站的编号从1到n。通信链路用其两端的站点编号表示。
接下来m行,每行两个整数 u,v (1 <= u, v <= n; u != v)代表一条链路。
最后1行,两个数u,v,代表被询问通信风险度的两个站点。
输出:一个整数,如果询问的两点不连通则输出-1.
例如:
用户输入:
7 6
1 3 2 3
3 4 3 5
4 5 5 6
1 6
则程序应该输出:
2
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 2000ms
#include <bits/stdc++.h>
using namespace std;
int n,m;
int s[2005][2];
int sum=0;
int fd[1005];
int find(int x){ //并查集
if(fd[x]==x) return x;
return fd[x]=find(fd[x]);
}
int main()
{
cin>>n>>m;
for(int i=0;i<m;i++)
cin>>s[i][0]>>s[i][1];
int k1,k2;
cin>>k1>>k2;
for(int i=0;i<m;i++){ //枚举每一条边 然后去掉 然如果连通 就不是关键点
for(int ii=1;ii<=n;ii++)fd[ii]=ii;
for(int j=0;j<m;j++){
if(i!=j){
int a=find(s[j][0]); //并查集
int b=find(s[j][1]);
if(a!=b)
fd[a]=b;
}
}
int a=find(k1);
int b=find(k2); //查看两个端点是否连通
if(a!=b) sum++;
}
cout<<sum<<endl;
return 0;
}
😜括号配对问题
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),
测试数据组数少于5组。数据保证S中只含有"[“,”]“,”(“,”)"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([])
样例输出
No
No
Yes
Yes
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
main()
{
int i,n;
int st=0,sp=0;
int num[100]={0};
scanf("%d",&n);
loop:
while(n--)
{
char* str = (char *)malloc(10005);
//初始化所有数据
st=0;
sp=0;
scanf("%s",str);
//字符串长度为奇数肯定不能对称
if(strlen(str)%2!=0)
{
printf("No\n");
continue;
}
for(i=0;i<strlen(str);i++)
{
if(str[i]=='(')
st+=1;
if(str[i]==')')
st-=1;
if(str[i]=='[')
sp+=1;
if(str[i]==']')
sp-=1;
// printf("%d %d\n",st,sp);
if(sp<0||st<0||(str[i]=='('&&str[i+1]==']')||(str[i]=='['&&str[i+1]==')'))
{
printf("No\n");
goto loop;
}
}
printf("Yes\n");
free(str);
}
return 0;
}
😜ASCII码排序
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入
3
qwe
asd
zxc
样例输出
e q w
a d s
c x z
#include "stdio.h"
main()
{
char a,b,c,d;
int i;
scanf("%d",&i);
getchar();
while(i--)
{
scanf("%c%c%c",&a,&b,&c);
getchar();
if (a>b) {d=a;a=b;b=d;}
if (a>c) {d=a;a=c;c=d;}
if (b>c) {d=b;b=c;c=d;}
printf("%c %c %c\n",a,b,c);
}
}
😜素数求和
现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和。
输入
第一行给出整数M(0<M<10)代表多少组测试数据
每组测试数据第一行给你N,代表该组测试数据的数量。
接下来的N个数为要测试的数据,每个数小于1000
输出
每组测试数据结果占一行,输出给出的测试数据的所有素数和
样例输入
3
5
1 2 3 4 5
8
11 12 13 14 15 16 17 18
10
21 22 23 24 25 26 27 28 29 30
样例输出
10
41
52
#include <stdio.h>
#include <math.h>
int is_permit(int num)
{
int i;
if(num==1)
return 0;
for(i=2;i*i<num+1;i++)
{
if(num%i==0)
return 0;
}
return 1;
}
main()
{
int n,m;
int i,temp;
int num[1005]={0},sum[15]={0};
// for(i=1;i<50;i++)
// printf("%d=%d\n",i,is_permit(i));
scanf("%d",&m);
temp=m;
//遍历temp组数据
while(m--)
{
//n个数据
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
//n个数据中的素数和存入对应的组数
if(is_permit(num[i]))
{
sum[temp-m-1]+=num[i];
}
// printf("当前数组质数和%d\n",sum[temp-m-1]);
}
}
//输出这temp组数据
for(i=0;i<temp;i++)
{
printf("%d\n",sum[i]);
}
return 0;
}
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
温馨提示:点击下方卡片获取更多意想不到的资源。