2021-01-19

3663 ワード

2748号


1.アイデア
n移行時にn番目のフィボナッチ数を出力することを考慮して、配列を作成し、配列にフィボナッチ数を格納する方法.
#include <iostream>

using namespace std;

int main()
{
    long long n;
    long long a[96]={0, };
    cin>>n;
    a[0]=0;
    a[1]=1;    
    for(int i=2; i<=90; i++)
    {
        a[i]=a[i-1]+a[i-2];                

    }
    cout<<a[n];

}
3.悟り
しかしnが90以下の自然数の条件を考慮せずにint型配列を用い,90回のフィボナッチ睡眠int型の範囲を超えたのでlonglong!

1003号


1.アイデア
最初に問題で提供された関数を使用し、関数で静的変数が0の場合、acount+1またはallでbcount++を出力しますが、エラーはタイムアウトです.だからDown-Top方式を使うことにしましたDown-Topは以前の値を保存し、次の問題を解くときにインポートします.
#include <iostream>

using namespace std;


int a[44][2];
int main()
{   
    a[0][0]=1;
    a[0][1]=0;
    a[1][0]=0;
    a[1][1]=1;
    for(int i=2; i<41; i++)
    {
        a[i][0]=a[i-2][0]+a[i-1][0];
        a[i][1]=a[i-2][1]+a[i-1][1];
    } 
    int i,t,n,f;
    cin>>t;      
    for(i=0; i<t; i++)
    {
        cin>>n;       
        
        cout<<a[n][0]<<' '<<a[n][1]<<'\n';
        
        
         
        
        
    }
    return 0;
}
3.悟り
問題を通して,動的プログラミングに初めて触れ,その中でもDown Top方式を理解した.

1181


1.アイデア
string型ベクトル受信単語を作成しsortでソート
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    cin.ignore();
    vector<pair<int,string>>v(n);

    for(int i=0; i<n; i++)
    {
        cin>>v[i].second;
        v[i].first=v[i].second.size();

    }

    sort(v.begin(),v.end());
    cout<<v[0].second<<'\n';
    for(int i=1; i<n; i++)
    {
        if(v[i].second!=v[i-1].second)
        {
            cout<<v[i].second<<'\n'; 
        }
        
    }
    
}


3.悟り


最初は文字列が辞書順に並ぶほどではありませんでしたが、どうしても長さ順に並ぶことが思い出せませんでした.そこでグーグルを試してみると、pairベクトルを使って2つのデータ型を格納できることが分かったので、文字列を文字列長に保存して並べ替えると簡単です.後でpairベクトルを多く利用します