StackOverFlowに関する私の最初の質問。
https://code.google.com/codejam/contest/11274486/dashboard#s=p0Googleコードジャム2017ラウンドA APAC国別リーダー
私のC++コードを終了し、正常にファイルを出力しました(私は思う)。しかし、ダッシュボードシステムが正しく反応しませんでした。なぜそれが起こったのかわかりません。
誰かが自分のアルゴリズムに何が間違っているのかを理解したり、解決したらコードを共有したりすることができます。ありがとう!!
そして私の貧しい英語を申し訳ありません。
これはXcodeの7.3.1と私のコードです:ハーゲン・フォン・Eitzenへ
// already solved the problem and removed my bad code :P
おかげで、ここで
が正しいバージョンである:
#include <iostream>
using namespace std;
int letternum(string name)
{
int i,num = 0;
int count[26];
for (i=0; i<26; i++)
count[i] = 0;
for (i=0; i<name.length(); i++)
{
if (name[i] != ' ')
count[name[i]-'A'] = 1;
}
for (i=0; i<26; i++)
{
num += count[i];
}
return num;
}
int main()
{
int T,N,t,n;
int longlen,namelen;
char tempchar[21];
string longest;
string name;
FILE *fin = fopen("A-large-practice.in", "r");
FILE *fout = fopen("A-large-practice.out", "w");
fscanf(fin, "%d", &T);
for (t=0; t<T; t++)
{
memset(tempchar, '\0', 21);
longest = "";
name = "";
fscanf(fin, "%d\n", &N);
fscanf(fin, "%[^\n]%*c", tempchar);
longest = tempchar;
longlen = letternum(longest);
for (n=1; n<N; n++)
{
memset(tempchar, '\0', 21);
name = "";
fscanf(fin, "%[^\n]%*c", tempchar);
name = tempchar;
namelen = letternum(name);
if (longlen == namelen)
{
if (longest > name)
{
longest = name;
longlen = letternum(longest);
}
}
if (longlen < namelen)
{
longest = name;
longlen = letternum(longest);
}
}
fprintf(fout, "Case #%d: %s\n", t+1, longest.c_str());
}
}
実際にC++を使用すると、これはかなり簡単になります。 –