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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LETTers比赛第七场 Guess the Numbers

發(fā)布時間:2025/5/22 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LETTers比赛第七场 Guess the Numbers 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這是其它國家區(qū)預賽的題目,大家可以看出來區(qū)域現(xiàn)場賽最簡單題的難度。

解題的思路很容易想到,四則運算處理可能比較麻煩~但是經(jīng)過細心調(diào)試應該問題不大;還有就是排列的生成可以自己寫,但是這里提倡用next_permutation()函數(shù)!還有一點是要注意結束的判斷。

???????? 以下是參考解題程序:

View Code 1 #include<stdio.h> 2 #include<stack> 3 #include<algorithm> 4 #include<ctype.h> 5 #include<string.h> 6 using namespace std; 7 const int maxn=6; 8 int a[maxn]; 9 char s[1000]; 10 int n; 11 typedef struct 12 { 13 char name[5]; 14 int index; 15 }unkown; 16 unkown u[5]; 17 int solve() 18 { 19 int i; 20 sort(a,a+n); 21 int tot; 22 int len=strlen(s); 23 do 24 { 25 tot=0; 26 stack<char>op; 27 stack<int>value; 28 for(i=0;i<len;i++) 29 { 30 int yes=0; 31 char name[4]; 32 int tt=0; 33 while(isalpha(s[i])) 34 { 35 name[tt++]=s[i++]; 36 yes=1; 37 } 38 if(yes) 39 { 40 i--; 41 name[tt]=0; 42 int j; 43 for(j=0;j<tot;j++)if(strcmp(u[j].name,name)==0) 44 break; 45 if(j==tot){strcpy(u[tot].name,name);u[tot].index=tot;tot++;} 46 if(yes)value.push(a[u[j].index]); 47 } 48 else if(s[i]!=')')op.push(s[i]); 49 else 50 { 51 char s=op.top(); 52 op.pop(); 53 if(s=='*') 54 { 55 int t,r; 56 t=value.top(); 57 value.pop(); 58 r=value.top(); 59 value.pop(); 60 value.push(t*r); 61 } 62 else if(s=='+') 63 { 64 int t,r; 65 t=value.top(); 66 value.pop(); 67 r=value.top(); 68 value.pop(); 69 value.push(t+r); 70 } 71 else if(s=='-') 72 { 73 int t,r; 74 t=value.top(); 75 value.pop(); 76 r=value.top(); 77 value.pop(); 78 value.push(r-t); 79 } 80 op.pop(); 81 } 82 } 83 if(value.top()==a[n]) 84 { value.pop();return 1;} 85 value.pop(); 86 }while(next_permutation(a,a+n)); 87 return 0; 88 } 89 int main() 90 { 91 while(gets(s)!=NULL&&(strstr(s,"0 0")-s)!=0) 92 { 93 n=0; 94 int len=strlen(s); 95 int i; 96 sscanf(s,"%d",&n); 97 i=0; 98 while(isdigit(s[i])){i++;} 99 int j; 100 int tot=0; 101 for(j=i;j<len;j++) 102 { 103 int temp=0; 104 int yes=0; 105 while(isdigit(s[j])) 106 { 107 yes=1; 108 temp=temp*10+s[j]-'0'; 109 j++; 110 } 111 if(yes)a[tot++]=temp; 112 } 113 gets(s); 114 if(solve())printf("YES\n"); 115 else printf("NO\n"); 116 } 117 return 0; 118 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/LETTers/archive/2012/04/25/2470537.html

總結

以上是生活随笔為你收集整理的LETTers比赛第七场 Guess the Numbers的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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