UVa-140 Bandwidth

本文深入探讨了使用邻接矩阵实现图算法的具体细节,包括边的添加、读取输入、深度优先搜索(DFS)寻找最短路径以及输出结果。通过具体的代码示例,展示了如何在C++中实现这些功能,特别关注于最小化节点间距离的问题。
  1 #include <bits/stdc++.h>
  2 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
  3 using namespace std;
  4 
  5 const char a[27] = {'A','B','C','D','E','F','G','H','I','J',
  6                     'K','L','M','N','O','P','Q','R','S','T',
  7                     'U','V','W','X','Y','Z'
  8                    };
  9 char s[393] {0};
 10 int m[27][27] {0};
 11 char rnts[39] {0};
 12 int rnt = INT_MAX;
 13 char ns[39] {0};
 14 int n;
 15 
 16 void addedge(int a,int b)
 17 {
 18     m[a][b] = m[b][a] = 1;
 19 }
 20 void read()
 21 {
 22     _for(i,0,strlen(s))
 23         if(s[i]==':')
 24             for(int j = i+1;s[j]!='\0'&&s[j]!=';';j ++)
 25                 addedge(s[i-1]-'A',s[j]-'A');
 26 }
 27 
 28 void dfs()
 29 {
 30     if(strlen(s)==1)
 31     {
 32         rnt = 0;
 33         rnts[0] = s[0];
 34         n = 1;
 35         return ;
 36     }
 37     int hash[27] {0};
 38     _for(i,0,27)
 39         _for(j,0,27)
 40             if(m[i][j])
 41                 hash[j] ++;
 42     int ns_end = 0;
 43     _for(i,0,27)
 44         if(hash[i])
 45             ns[ns_end++] = 'A'+i;
 46     n = ns_end;
 47     do
 48     {
 49         int maxt = INT_MIN;
 50         _for(i,0,27)
 51         {
 52             int maxtn = INT_MIN;
 53             _for(j,0,27)
 54             {
 55                 if(m[i][j])
 56                 {
 57                     int ai,bi;
 58                     _for(k,0,27)
 59                     {
 60                         if(ns[k]=='A'+i)
 61                             ai = k;
 62                         if(ns[k]=='A'+j)
 63                             bi = k;
 64                     }
 65                     int trnt = abs(ai-bi);
 66                     maxtn = max(trnt,maxtn);
 67                 }
 68             }
 69             maxt = max(maxt,maxtn);
 70             if(maxt>rnt)
 71                 break;
 72         }
 73         if(maxt<rnt)
 74             strcpy(rnts,ns);
 75         rnt = min(rnt,maxt);
 76     }while(next_permutation(ns,ns+strlen(ns)));
 77 }
 78 
 79 void output()
 80 {
 81     _for(i,0,n)
 82         printf("%c ",rnts[i]);
 83     printf("-> %d\n",rnt);
 84 }
 85 
 86 int main()
 87 {
 88     while(scanf("%s",s)==1 && s[0]!='#')
 89     {
 90         read();
 91         dfs();
 92         output();
 93         memset(s,0,sizeof(s));
 94         memset(m,0,sizeof(m));
 95         memset(ns,0,sizeof(ns));
 96         memset(rnts,0,sizeof(rnts));
 97         rnt = INT_MAX;
 98         n = 0;
 99     }
100     return 0;
101 }

后悔上了邻接矩阵的贼船

转载于:https://www.cnblogs.com/Asurudo/p/10050689.html

### PLL 闭合回路带宽解释 在通信系统和电子工程领域,PLL(Phase-Locked Loop, 锁相环)是一种用于同步信号频率和相位的重要电路。PLL 的性能很大程度上取决于其闭合回路带宽 (Closed-Loop Bandwidth),这一参数决定了系统的响应速度以及对外界干扰的抑制能力。 #### 定义与作用 闭合回路带宽是指当输入信号发生变化时,PLL 能够跟踪该变化的最大频率范围。在这个范围内,PLL 可以有效地调整自身的输出来匹配输入的变化。如果超过这个范围,则可能导致失锁现象发生[^1]。 对于大多数应用而言,合适的闭环带宽设置可以提高锁定时间并减少抖动;然而过高的值可能会降低噪声抑制效果,并使系统变得不稳定。因此,在设计过程中需要权衡这些因素以找到最佳点。 #### 计算方法 计算 PLL 的闭合回路带宽通常涉及到以下几个方面: - **开环增益**:这是指在整个控制路径中的总放大倍数,包括鉴频器/鉴相器、滤波器及压控振荡器(VCO)等组件的影响。 - **反馈系数**:即分频比 N 或者其他形式的比例因子,它影响着实际工作状态下 VCO 输出相对于参考输入之间的关系。 通过分析上述两个要素以及其他可能存在的补偿网络特性,可以利用传递函数理论得出具体的表达式来进行定量评估。一般情况下会采用 Bode 图或其他类似的工具辅助完成这项任务。 ```matlab % MATLAB code to plot a simple example of open loop gain vs frequency response. f = logspace(-2, 3); % Frequency vector from 0.01Hz to 1kHz on logarithmic scale G_open_loop = @(w)(1 ./ (1 + j*w*0.01)); % Example transfer function for demonstration purposes only. figure; bodemag(G_open_loop(f), f); title('Open Loop Gain Magnitude Response'); xlabel('Frequency [rad/s]'); ylabel('Magnitude [dB]'); grid on; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值