请问这个哪里错了啊?明明和题解差不多

P1036 [NOIP2002 普及组] 选数

~~明明和题解差不多~~
by koosi @ 2018-11-05 22:37:36


不是,你这times不是怎么跑都是0吗?
by Southern_way @ 2018-11-05 22:45:26


把long long 改成 int
by Anubis @ 2018-11-06 15:24:49


@[Evyde](/space/show?uid=146418) int就可以了,不用long long。 还有,本人太弱了,看不懂你的代码。 不过我还是推荐search: ```cpp #include<iostream> #include<cmath> using namespace std; int n,k,number[21],total=0,he=0; bool prime(int o)//判断o是否为素数 { for(int i=2;i<=sqrt(o);i++) if(o%i==0) return false; return true; } int search(int now,int l)//回溯 {//now是记录已经选了几个 //l是记录上次选到第几个数了 //因为如果每次都从1开始 //会重复 if(now<=k) { for(int i=l+1;i<=n;i++) { he+=number[i];//回溯 //把和记上 search(now+1,i); //往下一步search he-=number[i];//恢复 } } else if(prime(he)) total++; //上面这一行是判断,计数 } int main() { cin>>n>>k; for(int i=1;i<=n;i++) cin>>number[i]; search(1,0); //从第一个数开始选 //因为for的i从l+1开始 //所以search的l得是0 //这样i 才能==1 cout<<total<<endl; return 0; } ```
by 月落落落 @ 2018-11-08 13:57:41


|