2017-02-04 5 views
-3

私は何かを追加することを頼んでいました。 。私は追加するものを知っています。このラインは無駄です。 編集を提案するこのコードでrem == 0とrem = 0の違いは何ですか?

#include using namespace std;

typedef long long lli; 

lli mod = 1000000007; 

int n; 
char a[200000 + 10]; 
lli dp[200000 + 10][9]; 

lli solve(int pos, int rem) 
{ 
    if (pos == n) //**HERE** 
     return (rem == 0); 

    if (dp[pos][rem] != -1) 
     return dp[pos][rem]; 

    dp[pos][rem] = 0; 
    if (pos + 1 <= n) 
     dp[pos][rem] = solve(pos + 1, (rem * 10 + (a[pos] - '0')) % 8); 
    if (pos + 1 <= n) 
     dp[pos][rem] += solve(pos + 1, rem); 
    dp[pos][rem] %= mod; 

    return dp[pos][rem]; 
} 
+0

rem == 0はrem値をゼロで比較し、rem = 0はrem変数でゼロ割り当てを意味します。 – rsp

+0

もし(rem == 0)が真ならば、それは1を返しますか? –

+0

はい、trueの場合は1を返し、そうでない場合は0を返します。 – rsp

答えて

0

の値を有することができるのに対し2の差は代入演算子と比較演算子の違いです。

rem == 0は、比較演算子の例です。これは、remの値がゼロかどうかを比較するためです。この場合、NOTはゼロに設定されます!

REMがゼロに等しい場合は、あなたのコードに次の行:これはない場合であれば

return (rem == 0); 

しかし

return true; // or return 1, both mean the same thing in the bool expression. It returns true as the statement is true 

と同じであり、そのremは0でなければ、次に:

return (rem == 0); 
が何をするかに移ることは、それは単純に等号(すなわちレム)の左側に変数を代入することであるの右側にある値

return false; // or return 0, because the statement is false because rem is not equal to 0 

:10

は同じになります等号(すなわち0)。このステートメントは比較を行いません。単に値を割り当てるために使用されます。

1

rem==0 trueまたはfalse戻り、

例:

rem=5; 
rem=rem-5; 
if(a==0) 
    cout<<"YES"; 

rem=0; 

はREM変数が0

1
rem == 0 

チェックyes次いで条件が真になる場合remオペランドの値が、Zeroかに等しい場合。

rem=0; 

シンプル値右側から左側のオペランドに値を割り当てます。

1

'=='と '='演算子には大きな違いがあります。

は「==」は、2つのオペランドの値が等しいかどうかである場合は、チェック関係演算子

あります。 yesの場合、条件は真となり、そうでなければfalseになります。

POSSIBLE USE 
    1. In if else loops 

「=」これは、左側のオペランドに右側オペランドの値を代入代入演算子

あります。

POSSIBLE USE 
    1. During variable declaration and value assignment 
関連する問題