题解 | 模意义下最大子序列和(Easy Version)
模意义下最大子序列和(Easy Version)
https://www.nowcoder.com/practice/540ed4ee356c434bb3f96c67521b6671
#include <stdio.h>
int n;
long long int m,max_mod=0;
int a[15];
void dfs(int pos,long long int current_sum)
{
long long current_mod=current_sum%m;
if (current_mod > max_mod)
{
max_mod = current_mod;
}
if(pos==n)
{
return ;
}
dfs(pos+1,current_sum);//跳过pos
dfs(pos+1,current_sum+a[pos]);//不跳过pos
}
int main()
{
scanf("%d %lld",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
dfs(0,0);
printf("%lld",max_mod);
return 0;
}
调用DFS,两个方程dfs(pos+1,current_sum);//跳过pos和 dfs(pos+1,current_sum+a[pos]);//不跳过pos。

