今日头条编程之——K-SUM
2016-12-18 21:21
274 查看
代码:
回朔法:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
int n=sc.nextInt();
int m=sc.nextInt();
int k=sc.nextInt();
List<Node> nodelist=new ArrayList<Node>();
for(int i=0;i<k;i++){
Node node=new Node(n);
for(int j=0;j<n;j++){
node.num[j]=sc.nextInt();
}
nodelist.add(node);
}
System.out.println(GetCount(nodelist,m,n));
}
}
public static int GetCount(List<Node> nodelist,int m,int count){
int result=0;
int k = 0;// Node 下标
int n = nodelist.size();//Node 个数
int[] index = new int
;
for (int j = 0; j < n; j++)
{
index[j] = -1;
}
//这是主要的回朔
int tempsum = 0;
while (k >= 0){
index[k]++;
if(index[k]<count){
tempsum+=nodelist.get(k).num[index[k]];
if (k == n - 1){
if (tempsum > m){
result++;
}
tempsum-=nodelist.get(k).num[index[k]];
continue;
}else{
k = k + 1;
}
}else{
index[k] = -1;
k=k-1;
tempsum=0;
}
}
return result;
}
}
class Node{
int[] num;
public Node(int n){
num=new int
;
}
}
回朔法:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
int n=sc.nextInt();
int m=sc.nextInt();
int k=sc.nextInt();
List<Node> nodelist=new ArrayList<Node>();
for(int i=0;i<k;i++){
Node node=new Node(n);
for(int j=0;j<n;j++){
node.num[j]=sc.nextInt();
}
nodelist.add(node);
}
System.out.println(GetCount(nodelist,m,n));
}
}
public static int GetCount(List<Node> nodelist,int m,int count){
int result=0;
int k = 0;// Node 下标
int n = nodelist.size();//Node 个数
int[] index = new int
;
for (int j = 0; j < n; j++)
{
index[j] = -1;
}
//这是主要的回朔
int tempsum = 0;
while (k >= 0){
index[k]++;
if(index[k]<count){
tempsum+=nodelist.get(k).num[index[k]];
if (k == n - 1){
if (tempsum > m){
result++;
}
tempsum-=nodelist.get(k).num[index[k]];
continue;
}else{
k = k + 1;
}
}else{
index[k] = -1;
k=k-1;
tempsum=0;
}
}
return result;
}
}
class Node{
int[] num;
public Node(int n){
num=new int
;
}
}
相关文章推荐
- 今日头条2018实习生在线编程笔试题
- 最大映射 今日头条编程
- 20180324今日头条编程测试题:拼接数组 + Majicc操作
- 今日头条校招2017.7.21编程3,PM、idea、程序员
- 今日头条 2017年秋招编程题 :“最大乘积和”
- 今日头条技术剖析
- 今日头条实习面试总结(1)
- 牛客网--今日头条2018校招算法方向(第一批)编程题1、编程题2
- 服务器端开发(Python/C++)-今日头条-拉勾网-最专业的互联网招聘平台
- Android 仿今日头条频道管理(下)(GridView之间Item的移动和拖拽)
- Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO
- vuejs高仿今日头条移动端 - vue-toutiao
- 今日头条,笔试题
- python3正则+bs4+requests爬取今日头条街拍图片(ajax+html)
- android——仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中
- 【今日头条】测试工程师面试题
- android第三方今日头条、仿知乎日报、录音文字动画、多种跑马灯效果等源码
- 今日头条 为何你收入主要来自广告却没有注册第35类商标?
- 今日头条笔试之手串问题
- 今日头条的发家与困局