- 点击跳转专栏=>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/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
温馨提示:点击下方卡片获取更多意想不到的资源。