NC16763. 托米的咒语
描述
输入描述
一行输入一个字符串 s
输出描述
一行输出一个数,表示伤害值
示例1
输入:
aabcdefghi
输出:
1
C++14(g++5.4) 解法, 执行用时: 619ms, 内存消耗: 504K, 提交时间: 2018-07-28 19:47:27
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; char s[]={"abcdefghi"}; int main() { char a[3010]; scanf("%s",a); int l=strlen(a); int sum=0; do{ int i=0,j=0; while(i<9&&j<l) { if(a[j]==s[i]) i++,j++; else j++; } if(i==9) sum++; }while(next_permutation(s,s+9)); printf("%d\n",sum); }
C++11(clang++ 3.9) 解法, 执行用时: 509ms, 内存消耗: 480K, 提交时间: 2020-03-11 10:26:57
#include<bits/stdc++.h> #define N 3005 using namespace std; int ans,n; char s[N],b[10]="abcdefghi"; signed main() { scanf("%s",s); n=strlen(s); do { int p=0,i=0; while(p<9&&i<n) if(s[i]==b[p]) p++,i++; else i++; ans+=(p==9); }while(next_permutation(b,b+9)); cout<<ans; }