求助,为什么报错了

P1980 [NOIP2013 普及组] 计数问题

[评测记录](https://www.luogu.com.cn/record/134965809) --- 1.因为只是数字比较,不需要使用string,是单个字符。 2. $g[i][k]$ 表示单个字符,您声明的 $x$ 是字符串,2者类型不同,无法判等;故报错。 --- ```cpp #include <iostream> using namespace std; int main() { int n; // string x; char x; cin>>n>>x; string g[n]; for (int i=0;i<n;i++){ g[i]=to_string(i+1); } int times=0; for (int i=0;i<n;i++){ for (int k=0;k<g[i].length();k++){ // if (((string)(g[i]))[k==x){ // times+=1; // } if(g[i][k] == x) { ++ times; } } } cout<<times; return 0; } ```
by Twiter_ln @ 2023-11-13 21:35:56


有没有一种可能: 1.首先你没有string的头文件 2.其次((string)(g[i]))[k]==x这里相当与拿char和string比较了,所以会报错
by chinaklp @ 2023-11-13 21:36:29


@[love20110429](/user/1095806) 在第 $15$ 行你想干嘛
by 初星逝者 @ 2023-11-13 21:36:50


@[chinaklp](/user/106583) 我当时在那里改了,用它就行了? ```cpp #include <bits/stdc++.h> ``` 可是还是报错
by love20110429 @ 2023-11-13 21:42:59


@[love20110429](/user/1095806) 关于15行比较出了问题,等号左右两边类型不同,就炸掉了
by chinaklp @ 2023-11-13 21:46:17


@[chinaklp](/user/106583) 现在,问题又来了 代码对了 可是算不对 ```cpp #include <iostream> using namespace std; int main() { int n; char x; cin>>n>>x; string g[n]; for (int i=0;i<n;i++){ g[i]=to_string(i+1); } int times=0; for (int i=0;i<n;i++){ for (int k=0;k<g[i].length();k++){ if(g[i][k] == x) { ++ times; } } } cout<<times; return 0; } ``` 分析一下原因吧
by love20110429 @ 2023-11-13 21:54:36


@[love20110429](/user/1095806) 有没有可能要开long long
by chinaklp @ 2023-11-14 17:05:23


有没有一种可能,你取出数的各个位的数就行了?
by UzumakiBoruto @ 2023-11-26 21:59:49


|