日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

usaco letter game

發(fā)布時間:2023/11/27 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 usaco letter game 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這個代碼是我轉(zhuǎn)的,我自己寫了好幾次不是這里出錯就是那里出錯我實在受不了了。

/*   
ID: jinbo wu  
LANG: C++    
TASK: lgame 
*/        
#include<iostream>        
#include<istream>    
#include<stdio.h>       
#include<string.h>        
#include<math.h>        
#include<stack>  
#include<map>  
#include<algorithm>        
#include<queue>     
#define oo 1000000000    
#define ll long long    
#define pi (atan(2)+atan(0.5))*2   
using namespace std;    
struct node  
{  int s[26];        
}h,p,q;  
int w[26]={2,5,4,4,1,6,5,5,1,7,6,3,5,2,3,5,7,2,1,2,4,6,6,7,5,7};  
int l,num,m,len[40000],M[40000],temp,ansnum,MaxM;  
char s[10],dict[40000][9],ans[501][10];   
void Find2(int z)  
{  int i,j;  for (i=z+1;i<=num;i++)  if (M[i]<=m)  {  q=p;  for (j=0;j<len[i];j++)  if (!q.s[dict[i][j]-'a']) goto B;  else q.s[dict[i][j]-'a']--;     if (M[i]+M[temp]>MaxM)  {  MaxM=M[i]+M[temp];  ansnum=1;  strcpy(ans[1],dict[temp]);  ans[1][len[temp]]=' ';  strcpy(ans[1]+len[temp]+1,dict[i]);                                     }else  if (M[i]+M[temp]==MaxM)  {  ansnum++;  strcpy(ans[ansnum],dict[temp]);  ans[ansnum][len[temp]]=' ';  strcpy(ans[ansnum]+len[temp]+1,dict[i]);                         }   B: ;  }  
}  
void getanswer()  
{  int i,j;  m=0;  memset(h.s,0,sizeof(h.s));  for (i=0;i<l;i++)  {  m+=w[s[i]-'a'];  h.s[s[i]-'a']++;  }   ansnum=0; MaxM=0;  for (i=1;i<=num;i++)  if (len[i]<=l && M[i]<=m)  {  p=h;  for (j=0;j<len[i];j++)  if (!p.s[dict[i][j]-'a']) goto A;  else p.s[dict[i][j]-'a']--;     if (M[i]>MaxM)  {  MaxM=M[i];  ansnum=1;  strcpy(ans[1],dict[i]);       }else  if (M[i]==MaxM)  strcpy(ans[++ansnum],dict[i]);         if (l-len[i]>=3)  {   temp=i;  m-=M[i];   Find2(i);                    m+=M[i];               }     A: ;   }  return;  
}  
int main()    
{    int i;  freopen("lgame.dict","r",stdin);   num=0;  do  {  scanf("%s",dict[++num]);        }while (dict[num][0]!='.');  num--;  for (i=1;i<=num;i++)  {  len[i]=strlen(dict[i]); M[i]=0;  for (m=0;m<len[i];m++)  M[i]+=w[dict[i][m]-'a'];  }  fclose(stdin);    freopen("lgame.in","r",stdin);     freopen("lgame.out","w",stdout);      scanf("%s",s);  l=strlen(s);   getanswer();   printf("%d\n",MaxM);  for (i=1;i<=ansnum;i++) printf("%s\n",ans[i]);  return 0;       
} 


總結(jié)

以上是生活随笔為你收集整理的usaco letter game的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。