hdu 1546 Idiomatic Phrases Game

简介: 点击打开链接hdu 1546 思路:最短路+SPFA 分析: 1  只要建好图,然后利用SPFA求解最短路即可。注意字符串的处理 2  定义一个char ch[10]数组,如果给数组的每一个元素值赋值后,还要记得要在最后ch[9]添加‘\0’,表示结束。

点击打开链接hdu 1546


思路:最短路+SPFA
分析:
1  只要建好图,然后利用SPFA求解最短路即可。注意字符串的处理
2  定义一个char ch[10]数组,如果给数组的每一个元素值赋值后,还要记得要在最后ch[9]添加‘\0’,表示结束。就是如果要保存10个元素,那么数组最小要开到11,因为第11个表示‘\0’来表示正常结束。所以数组尽量开大点

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
using namespace std;
#define MAXN 1010
#define INF 0xFFFFFFF

int n;
char str[MAXN][MAXN];
int value[MAXN][MAXN];
int t[MAXN];
int dis[MAXN];
int vis[MAXN];
queue<int>q;

/*初始化*/
void init(){
   int i , j , k , len;    
   char ch1[10], ch2[10];
   for(i = 1 ; i <= n ; i++){
      len = strlen(str[i])-4;
      for(k = 0 ; k < 4 ; k++)
          ch1[k] = str[i][len+k];  
      ch1[4] = '\0';/*末尾加上'\0',表示字符串结束*/
      for(j = 1 ; j <= n ; j++){
         value[i][j] = INF;
         for(k = 0 ; k < 4 ; k++)
            ch2[k]  = str[j][k];
         ch2[4] = '\0';/*末尾加上'\0',表示字符串结束*/
         if(!strcmp(ch1 , ch2))
           value[i][j] = t[i];
      }   
      value[i][i] = 0;
   }
}

/*SPFA*/
void SPFA(){
    memset(vis , 0 , sizeof(vis));
    for(int i = 2 ; i <= n ; i++)
       dis[i] = INF;
    dis[1] = 0;
    vis[1] = 1;
    q.push(1);
    while(!q.empty()){
       int x = q.front();
       q.pop();
       vis[x] = 0;
       for(int i = 1 ; i <= n ; i++){
          if(value[x][i] && dis[i] > dis[x] + value[x][i]){
            dis[i] = dis[x] + value[x][i];
            if(!vis[i]){
               vis[i] = 1;
               q.push(i);
            }
          }
       }
    }
}

int main(){
   while(scanf("%d" , &n) && n){
      for(int i = 1; i <= n ; i++)
         scanf("%d %s" , &t[i] , str[i]);
      init();
      SPFA();
      if(dis[n] != INF)
        printf("%d\n" , dis[n]);
      else
        printf("-1\n");
   }
   return 0;
}



目录
相关文章
|
人工智能 编解码 算法
社区供稿 | 视频目标检测(IJCAI 2023) 流感知优化 DAMO-StreamNet 开源
传统视频目标检测(Video Object Detection, VOD)任务以一段视频作为输入,利用视频的时序信息进行目标检测,并最终输出每一帧视频帧的检测结果。
|
机器学习/深度学习 存储 自然语言处理
世界的参数倒影:为何GPT通过Next Token Prediction可以产生智能(2)
世界的参数倒影:为何GPT通过Next Token Prediction可以产生智能
645 0
|
PyTorch 算法框架/工具
Pytorch之nn.Conv1d学习个人见解
Pytorch之nn.Conv1d学习个人见解
3605 2
Pytorch之nn.Conv1d学习个人见解
|
算法 5G
基于导频的信道估计实现
基于导频的信道估计实现
910 0
基于导频的信道估计实现
|
机器学习/深度学习
【信号检测】基于长短期记忆(LSTM)在OFDM系统中基于深度学习的信号检测(Matlab代码实现)
【信号检测】基于长短期记忆(LSTM)在OFDM系统中基于深度学习的信号检测(Matlab代码实现)
261 0
|
网络安全 数据安全/隐私保护
SSH远程免密登录的两种方式
服务器之间经常需要有一些跨服务器的操作,此时就需要我们在一台服务器上登录到另外一台服务器,若是人为操作时我们都可以每次输入密码进行远程登录,但要是程序需要跨服务器时,每次输入密码就不现实了,所以我们需要免密登录
24324 0
SSH远程免密登录的两种方式
|
机器学习/深度学习 智能设计 自然语言处理
Gradient Normalization在多任务学习中的优化实践
在每平每屋以及我们团队负责的其他一些场景,MMoE多任务模型是精排阶段常用的模型。在每平每屋场景中,我们使用MMoE模型,对场景中的三个任务同时进行点击率预估,即内容的一跳点击、内容详情页点击以及跳转的商品详情页点击。
1146 0
Gradient Normalization在多任务学习中的优化实践
|
22小时前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。