Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub-Project Practice It Answers

Write a method printSquares that uses recursive backtracking to find all ways to express an integer as a sum of squares of unique positive integers. For example, the call of printSquares(200); should produce the following output:

1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 8^2 + 9^2
1^2 + 2^2 + 3^2 + 4^2 + 7^2 + 11^2
1^2 + 2^2 + 5^2 + 7^2 + 11^2
1^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2
1^2 + 3^2 + 4^2 + 5^2 + 7^2 + 10^2
2^2 + 4^2 + 6^2 + 12^2
2^2 + 14^2
3^2 + 5^2 + 6^2 + 7^2 + 9^2
6^2 + 8^2 + 10^2

Some numbers (such as 128 or 0) cannot be represented as a sum of squares, in which case your method should produce no output. Keep in mind that the sum has to be formed with unique integers. Otherwise you could always find a solution by adding 1^2 together until you got to whatever number you are working with.

As with any backtracking problem, this one amounts to a set of choices, one for each integer whose square might or might not be part of your sum. In many of our backtracking problems we store the choices in some kind of collection. In this problem you can instead generate the choices by doing a for loop over an appropriate range of numbers. Note that the maximum possible integer that can be part of a sum of squares for an integer n is the square root of n.

Like with other backtracking problems, you still need to keep track of which choices you have made at any given moment. In this case, the choices you have made consist of some group of integers whose squares may be part of a sum that will add up to n. Represent these chosen integers as an appropriate collection where you add the integer i to the collection to consider it as part of an answer. If you ever create such a collection whose values squared add up to n, you have found a sum that should be printed.

To help you solve this problem, assume there already exists a method printHelper that accepts any Java collection of integers (such as a list, set, stack, queue, etc.) and prints the collection's elements in order. For example, if a set s stores the elements [1, 4, 8, 11], the call of printHelper(s); would produce the following output:

1^2 + 4^2 + 8^2 + 11^2

//Tips: // each recursion should know where it is in the stack so that we won't call the // same number and try to square them over and over again.
//If the input parameter is 0, that means we have somewhat found the solution, and the // method should have a way to notify the method that calls it. (base case! )
// The other base case if that the remainder becomes zero, and in that // case, the method should just does nothing at all. //We use one arraylist as the parameter that is passed through the lovely recursion. public static void printSquares(int n)
{
if(n ==0)return;
printSquares_helper(new ArrayList(),n,1);
}
// level is the choice we made.
private static void printSquares_helper(List trials, int remainder,int level)
{
int upperbound =(int) Math.sqrt(remainder);
if(remainder ==0)
{
printResult(trials);
if(!trials.isEmpty())trials.remove(trials.size()-1); return;
}// the successful base case; for
(
int i= level; i<=upperbound; //important!
trials.add(i), printSquares_helper(trials, remainder-i*i,++i)
);
if(!trials.isEmpty())trials.remove(trials.size()-1); //Bacause the number is already considered
// so we need to remove it while retrieving a space for the method that calls this method.
// prevent duplicates of numbers in the collection. }
/**
Given an array and it will print out the result using recursion. */
private static void printResult(List arg)
{
printResult(arg, 0 );
}
private static void printResult(List arg, int index)
{
if(index == arg.size()-1){System.out.println(arg.get(index)+"^2");return;}
System.out.print(arg.get(index)+"^2 + ");
printResult(arg,index+1);
}
// you should use a for loop to print out the list....

PLEASE GO TO READ THE CODE ABOVE FOR MORE COOL SOLUTION LIKE THIS.


Here is a place where I put my answers for practice it, like the solution above is for recursive back tracking.

About

Answers to some of the problems.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub-Project Practice It Answers

Write a method printSquares that uses recursive backtracking to find all ways to express an integer as a sum of squares of unique positive integers. For example, the call of printSquares(200); should produce the following output:

1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 8^2 + 9^2
1^2 + 2^2 + 3^2 + 4^2 + 7^2 + 11^2
1^2 + 2^2 + 5^2 + 7^2 + 11^2
1^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2
1^2 + 3^2 + 4^2 + 5^2 + 7^2 + 10^2
2^2 + 4^2 + 6^2 + 12^2
2^2 + 14^2
3^2 + 5^2 + 6^2 + 7^2 + 9^2
6^2 + 8^2 + 10^2

Some numbers (such as 128 or 0) cannot be represented as a sum of squares, in which case your method should produce no output. Keep in mind that the sum has to be formed with unique integers. Otherwise you could always find a solution by adding 1^2 together until you got to whatever number you are working with.

As with any backtracking problem, this one amounts to a set of choices, one for each integer whose square might or might not be part of your sum. In many of our backtracking problems we store the choices in some kind of collection. In this problem you can instead generate the choices by doing a for loop over an appropriate range of numbers. Note that the maximum possible integer that can be part of a sum of squares for an integer n is the square root of n.

Like with other backtracking problems, you still need to keep track of which choices you have made at any given moment. In this case, the choices you have made consist of some group of integers whose squares may be part of a sum that will add up to n. Represent these chosen integers as an appropriate collection where you add the integer i to the collection to consider it as part of an answer. If you ever create such a collection whose values squared add up to n, you have found a sum that should be printed.

To help you solve this problem, assume there already exists a method printHelper that accepts any Java collection of integers (such as a list, set, stack, queue, etc.) and prints the collection's elements in order. For example, if a set s stores the elements [1, 4, 8, 11], the call of printHelper(s); would produce the following output:

1^2 + 4^2 + 8^2 + 11^2

//Tips: // each recursion should know where it is in the stack so that we won't call the // same number and try to square them over and over again.
//If the input parameter is 0, that means we have somewhat found the solution, and the // method should have a way to notify the method that calls it. (base case! )
// The other base case if that the remainder becomes zero, and in that // case, the method should just does nothing at all. //We use one arraylist as the parameter that is passed through the lovely recursion. public static void printSquares(int n)
{
if(n ==0)return;
printSquares_helper(new ArrayList(),n,1);
}
// level is the choice we made.
private static void printSquares_helper(List trials, int remainder,int level)
{
int upperbound =(int) Math.sqrt(remainder);
if(remainder ==0)
{
printResult(trials);
if(!trials.isEmpty())trials.remove(trials.size()-1); return;
}// the successful base case; for
(
int i= level; i<=upperbound; //important!
trials.add(i), printSquares_helper(trials, remainder-i*i,++i)
);
if(!trials.isEmpty())trials.remove(trials.size()-1); //Bacause the number is already considered
// so we need to remove it while retrieving a space for the method that calls this method.
// prevent duplicates of numbers in the collection. }
/**
Given an array and it will print out the result using recursion. */
private static void printResult(List arg)
{
printResult(arg, 0 );
}
private static void printResult(List arg, int index)
{
if(index == arg.size()-1){System.out.println(arg.get(index)+"^2");return;}
System.out.print(arg.get(index)+"^2 + ");
printResult(arg,index+1);
}
// you should use a for loop to print out the list....

PLEASE GO TO READ THE CODE ABOVE FOR MORE COOL SOLUTION LIKE THIS.


Here is a place where I put my answers for practice it, like the solution above is for recursive back tracking.

About

Answers to some of the problems.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub-Project Practice It Answers

Write a method printSquares that uses recursive backtracking to find all ways to express an integer as a sum of squares of unique positive integers. For example, the call of printSquares(200); should produce the following output:

1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 8^2 + 9^2
1^2 + 2^2 + 3^2 + 4^2 + 7^2 + 11^2
1^2 + 2^2 + 5^2 + 7^2 + 11^2
1^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2
1^2 + 3^2 + 4^2 + 5^2 + 7^2 + 10^2
2^2 + 4^2 + 6^2 + 12^2
2^2 + 14^2
3^2 + 5^2 + 6^2 + 7^2 + 9^2
6^2 + 8^2 + 10^2

Some numbers (such as 128 or 0) cannot be represented as a sum of squares, in which case your method should produce no output. Keep in mind that the sum has to be formed with unique integers. Otherwise you could always find a solution by adding 1^2 together until you got to whatever number you are working with.

As with any backtracking problem, this one amounts to a set of choices, one for each integer whose square might or might not be part of your sum. In many of our backtracking problems we store the choices in some kind of collection. In this problem you can instead generate the choices by doing a for loop over an appropriate range of numbers. Note that the maximum possible integer that can be part of a sum of squares for an integer n is the square root of n.

Like with other backtracking problems, you still need to keep track of which choices you have made at any given moment. In this case, the choices you have made consist of some group of integers whose squares may be part of a sum that will add up to n. Represent these chosen integers as an appropriate collection where you add the integer i to the collection to consider it as part of an answer. If you ever create such a collection whose values squared add up to n, you have found a sum that should be printed.

To help you solve this problem, assume there already exists a method printHelper that accepts any Java collection of integers (such as a list, set, stack, queue, etc.) and prints the collection's elements in order. For example, if a set s stores the elements [1, 4, 8, 11], the call of printHelper(s); would produce the following output:

1^2 + 4^2 + 8^2 + 11^2

//Tips: // each recursion should know where it is in the stack so that we won't call the // same number and try to square them over and over again.
//If the input parameter is 0, that means we have somewhat found the solution, and the // method should have a way to notify the method that calls it. (base case! )
// The other base case if that the remainder becomes zero, and in that // case, the method should just does nothing at all. //We use one arraylist as the parameter that is passed through the lovely recursion. public static void printSquares(int n)
{
if(n ==0)return;
printSquares_helper(new ArrayList(),n,1);
}
// level is the choice we made.
private static void printSquares_helper(List trials, int remainder,int level)
{
int upperbound =(int) Math.sqrt(remainder);
if(remainder ==0)
{
printResult(trials);
if(!trials.isEmpty())trials.remove(trials.size()-1); return;
}// the successful base case; for
(
int i= level; i<=upperbound; //important!
trials.add(i), printSquares_helper(trials, remainder-i*i,++i)
);
if(!trials.isEmpty())trials.remove(trials.size()-1); //Bacause the number is already considered
// so we need to remove it while retrieving a space for the method that calls this method.
// prevent duplicates of numbers in the collection. }
/**
Given an array and it will print out the result using recursion. */
private static void printResult(List arg)
{
printResult(arg, 0 );
}
private static void printResult(List arg, int index)
{
if(index == arg.size()-1){System.out.println(arg.get(index)+"^2");return;}
System.out.print(arg.get(index)+"^2 + ");
printResult(arg,index+1);
}
// you should use a for loop to print out the list....

PLEASE GO TO READ THE CODE ABOVE FOR MORE COOL SOLUTION LIKE THIS.


Here is a place where I put my answers for practice it, like the solution above is for recursive back tracking.

About

Answers to some of the problems.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub-Project Practice It Answers

Write a method printSquares that uses recursive backtracking to find all ways to express an integer as a sum of squares of unique positive integers. For example, the call of printSquares(200); should produce the following output:

1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 8^2 + 9^2
1^2 + 2^2 + 3^2 + 4^2 + 7^2 + 11^2
1^2 + 2^2 + 5^2 + 7^2 + 11^2
1^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2
1^2 + 3^2 + 4^2 + 5^2 + 7^2 + 10^2
2^2 + 4^2 + 6^2 + 12^2
2^2 + 14^2
3^2 + 5^2 + 6^2 + 7^2 + 9^2
6^2 + 8^2 + 10^2

Some numbers (such as 128 or 0) cannot be represented as a sum of squares, in which case your method should produce no output. Keep in mind that the sum has to be formed with unique integers. Otherwise you could always find a solution by adding 1^2 together until you got to whatever number you are working with.

As with any backtracking problem, this one amounts to a set of choices, one for each integer whose square might or might not be part of your sum. In many of our backtracking problems we store the choices in some kind of collection. In this problem you can instead generate the choices by doing a for loop over an appropriate range of numbers. Note that the maximum possible integer that can be part of a sum of squares for an integer n is the square root of n.

Like with other backtracking problems, you still need to keep track of which choices you have made at any given moment. In this case, the choices you have made consist of some group of integers whose squares may be part of a sum that will add up to n. Represent these chosen integers as an appropriate collection where you add the integer i to the collection to consider it as part of an answer. If you ever create such a collection whose values squared add up to n, you have found a sum that should be printed.

To help you solve this problem, assume there already exists a method printHelper that accepts any Java collection of integers (such as a list, set, stack, queue, etc.) and prints the collection's elements in order. For example, if a set s stores the elements [1, 4, 8, 11], the call of printHelper(s); would produce the following output:

1^2 + 4^2 + 8^2 + 11^2

//Tips: // each recursion should know where it is in the stack so that we won't call the // same number and try to square them over and over again.
//If the input parameter is 0, that means we have somewhat found the solution, and the // method should have a way to notify the method that calls it. (base case! )
// The other base case if that the remainder becomes zero, and in that // case, the method should just does nothing at all. //We use one arraylist as the parameter that is passed through the lovely recursion. public static void printSquares(int n)
{
if(n ==0)return;
printSquares_helper(new ArrayList(),n,1);
}
// level is the choice we made.
private static void printSquares_helper(List trials, int remainder,int level)
{
int upperbound =(int) Math.sqrt(remainder);
if(remainder ==0)
{
printResult(trials);
if(!trials.isEmpty())trials.remove(trials.size()-1); return;
}// the successful base case; for
(
int i= level; i<=upperbound; //important!
trials.add(i), printSquares_helper(trials, remainder-i*i,++i)
);
if(!trials.isEmpty())trials.remove(trials.size()-1); //Bacause the number is already considered
// so we need to remove it while retrieving a space for the method that calls this method.
// prevent duplicates of numbers in the collection. }
/**
Given an array and it will print out the result using recursion. */
private static void printResult(List arg)
{
printResult(arg, 0 );
}
private static void printResult(List arg, int index)
{
if(index == arg.size()-1){System.out.println(arg.get(index)+"^2");return;}
System.out.print(arg.get(index)+"^2 + ");
printResult(arg,index+1);
}
// you should use a for loop to print out the list....

PLEASE GO TO READ THE CODE ABOVE FOR MORE COOL SOLUTION LIKE THIS.


Here is a place where I put my answers for practice it, like the solution above is for recursive back tracking.

About

Answers to some of the problems.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub-Project Practice It Answers

Write a method printSquares that uses recursive backtracking to find all ways to express an integer as a sum of squares of unique positive integers. For example, the call of printSquares(200); should produce the following output:

1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 8^2 + 9^2
1^2 + 2^2 + 3^2 + 4^2 + 7^2 + 11^2
1^2 + 2^2 + 5^2 + 7^2 + 11^2
1^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2
1^2 + 3^2 + 4^2 + 5^2 + 7^2 + 10^2
2^2 + 4^2 + 6^2 + 12^2
2^2 + 14^2
3^2 + 5^2 + 6^2 + 7^2 + 9^2
6^2 + 8^2 + 10^2

Some numbers (such as 128 or 0) cannot be represented as a sum of squares, in which case your method should produce no output. Keep in mind that the sum has to be formed with unique integers. Otherwise you could always find a solution by adding 1^2 together until you got to whatever number you are working with.

As with any backtracking problem, this one amounts to a set of choices, one for each integer whose square might or might not be part of your sum. In many of our backtracking problems we store the choices in some kind of collection. In this problem you can instead generate the choices by doing a for loop over an appropriate range of numbers. Note that the maximum possible integer that can be part of a sum of squares for an integer n is the square root of n.

Like with other backtracking problems, you still need to keep track of which choices you have made at any given moment. In this case, the choices you have made consist of some group of integers whose squares may be part of a sum that will add up to n. Represent these chosen integers as an appropriate collection where you add the integer i to the collection to consider it as part of an answer. If you ever create such a collection whose values squared add up to n, you have found a sum that should be printed.

To help you solve this problem, assume there already exists a method printHelper that accepts any Java collection of integers (such as a list, set, stack, queue, etc.) and prints the collection's elements in order. For example, if a set s stores the elements [1, 4, 8, 11], the call of printHelper(s); would produce the following output:

1^2 + 4^2 + 8^2 + 11^2

//Tips: // each recursion should know where it is in the stack so that we won't call the // same number and try to square them over and over again.
//If the input parameter is 0, that means we have somewhat found the solution, and the // method should have a way to notify the method that calls it. (base case! )
// The other base case if that the remainder becomes zero, and in that // case, the method should just does nothing at all. //We use one arraylist as the parameter that is passed through the lovely recursion. public static void printSquares(int n)
{
if(n ==0)return;
printSquares_helper(new ArrayList(),n,1);
}
// level is the choice we made.
private static void printSquares_helper(List trials, int remainder,int level)
{
int upperbound =(int) Math.sqrt(remainder);
if(remainder ==0)
{
printResult(trials);
if(!trials.isEmpty())trials.remove(trials.size()-1); return;
}// the successful base case; for
(
int i= level; i<=upperbound; //important!
trials.add(i), printSquares_helper(trials, remainder-i*i,++i)
);
if(!trials.isEmpty())trials.remove(trials.size()-1); //Bacause the number is already considered
// so we need to remove it while retrieving a space for the method that calls this method.
// prevent duplicates of numbers in the collection. }
/**
Given an array and it will print out the result using recursion. */
private static void printResult(List arg)
{
printResult(arg, 0 );
}
private static void printResult(List arg, int index)
{
if(index == arg.size()-1){System.out.println(arg.get(index)+"^2");return;}
System.out.print(arg.get(index)+"^2 + ");
printResult(arg,index+1);
}
// you should use a for loop to print out the list....

PLEASE GO TO READ THE CODE ABOVE FOR MORE COOL SOLUTION LIKE THIS.


Here is a place where I put my answers for practice it, like the solution above is for recursive back tracking.

About

Answers to some of the problems.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub-Project Practice It Answers

Write a method printSquares that uses recursive backtracking to find all ways to express an integer as a sum of squares of unique positive integers. For example, the call of printSquares(200); should produce the following output:

1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 8^2 + 9^2
1^2 + 2^2 + 3^2 + 4^2 + 7^2 + 11^2
1^2 + 2^2 + 5^2 + 7^2 + 11^2
1^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2
1^2 + 3^2 + 4^2 + 5^2 + 7^2 + 10^2
2^2 + 4^2 + 6^2 + 12^2
2^2 + 14^2
3^2 + 5^2 + 6^2 + 7^2 + 9^2
6^2 + 8^2 + 10^2

Some numbers (such as 128 or 0) cannot be represented as a sum of squares, in which case your method should produce no output. Keep in mind that the sum has to be formed with unique integers. Otherwise you could always find a solution by adding 1^2 together until you got to whatever number you are working with.

As with any backtracking problem, this one amounts to a set of choices, one for each integer whose square might or might not be part of your sum. In many of our backtracking problems we store the choices in some kind of collection. In this problem you can instead generate the choices by doing a for loop over an appropriate range of numbers. Note that the maximum possible integer that can be part of a sum of squares for an integer n is the square root of n.

Like with other backtracking problems, you still need to keep track of which choices you have made at any given moment. In this case, the choices you have made consist of some group of integers whose squares may be part of a sum that will add up to n. Represent these chosen integers as an appropriate collection where you add the integer i to the collection to consider it as part of an answer. If you ever create such a collection whose values squared add up to n, you have found a sum that should be printed.

To help you solve this problem, assume there already exists a method printHelper that accepts any Java collection of integers (such as a list, set, stack, queue, etc.) and prints the collection's elements in order. For example, if a set s stores the elements [1, 4, 8, 11], the call of printHelper(s); would produce the following output:

1^2 + 4^2 + 8^2 + 11^2

//Tips: // each recursion should know where it is in the stack so that we won't call the // same number and try to square them over and over again.
//If the input parameter is 0, that means we have somewhat found the solution, and the // method should have a way to notify the method that calls it. (base case! )
// The other base case if that the remainder becomes zero, and in that // case, the method should just does nothing at all. //We use one arraylist as the parameter that is passed through the lovely recursion. public static void printSquares(int n)
{
if(n ==0)return;
printSquares_helper(new ArrayList(),n,1);
}
// level is the choice we made.
private static void printSquares_helper(List trials, int remainder,int level)
{
int upperbound =(int) Math.sqrt(remainder);
if(remainder ==0)
{
printResult(trials);
if(!trials.isEmpty())trials.remove(trials.size()-1); return;
}// the successful base case; for
(
int i= level; i<=upperbound; //important!
trials.add(i), printSquares_helper(trials, remainder-i*i,++i)
);
if(!trials.isEmpty())trials.remove(trials.size()-1); //Bacause the number is already considered
// so we need to remove it while retrieving a space for the method that calls this method.
// prevent duplicates of numbers in the collection. }
/**
Given an array and it will print out the result using recursion. */
private static void printResult(List arg)
{
printResult(arg, 0 );
}
private static void printResult(List arg, int index)
{
if(index == arg.size()-1){System.out.println(arg.get(index)+"^2");return;}
System.out.print(arg.get(index)+"^2 + ");
printResult(arg,index+1);
}
// you should use a for loop to print out the list....

PLEASE GO TO READ THE CODE ABOVE FOR MORE COOL SOLUTION LIKE THIS.


Here is a place where I put my answers for practice it, like the solution above is for recursive back tracking.

About

Answers to some of the problems.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub-Project Practice It Answers

Write a method printSquares that uses recursive backtracking to find all ways to express an integer as a sum of squares of unique positive integers. For example, the call of printSquares(200); should produce the following output:

1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 8^2 + 9^2
1^2 + 2^2 + 3^2 + 4^2 + 7^2 + 11^2
1^2 + 2^2 + 5^2 + 7^2 + 11^2
1^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2
1^2 + 3^2 + 4^2 + 5^2 + 7^2 + 10^2
2^2 + 4^2 + 6^2 + 12^2
2^2 + 14^2
3^2 + 5^2 + 6^2 + 7^2 + 9^2
6^2 + 8^2 + 10^2

Some numbers (such as 128 or 0) cannot be represented as a sum of squares, in which case your method should produce no output. Keep in mind that the sum has to be formed with unique integers. Otherwise you could always find a solution by adding 1^2 together until you got to whatever number you are working with.

As with any backtracking problem, this one amounts to a set of choices, one for each integer whose square might or might not be part of your sum. In many of our backtracking problems we store the choices in some kind of collection. In this problem you can instead generate the choices by doing a for loop over an appropriate range of numbers. Note that the maximum possible integer that can be part of a sum of squares for an integer n is the square root of n.

Like with other backtracking problems, you still need to keep track of which choices you have made at any given moment. In this case, the choices you have made consist of some group of integers whose squares may be part of a sum that will add up to n. Represent these chosen integers as an appropriate collection where you add the integer i to the collection to consider it as part of an answer. If you ever create such a collection whose values squared add up to n, you have found a sum that should be printed.

To help you solve this problem, assume there already exists a method printHelper that accepts any Java collection of integers (such as a list, set, stack, queue, etc.) and prints the collection's elements in order. For example, if a set s stores the elements [1, 4, 8, 11], the call of printHelper(s); would produce the following output:

1^2 + 4^2 + 8^2 + 11^2

//Tips: // each recursion should know where it is in the stack so that we won't call the // same number and try to square them over and over again.
//If the input parameter is 0, that means we have somewhat found the solution, and the // method should have a way to notify the method that calls it. (base case! )
// The other base case if that the remainder becomes zero, and in that // case, the method should just does nothing at all. //We use one arraylist as the parameter that is passed through the lovely recursion. public static void printSquares(int n)
{
if(n ==0)return;
printSquares_helper(new ArrayList(),n,1);
}
// level is the choice we made.
private static void printSquares_helper(List trials, int remainder,int level)
{
int upperbound =(int) Math.sqrt(remainder);
if(remainder ==0)
{
printResult(trials);
if(!trials.isEmpty())trials.remove(trials.size()-1); return;
}// the successful base case; for
(
int i= level; i<=upperbound; //important!
trials.add(i), printSquares_helper(trials, remainder-i*i,++i)
);
if(!trials.isEmpty())trials.remove(trials.size()-1); //Bacause the number is already considered
// so we need to remove it while retrieving a space for the method that calls this method.
// prevent duplicates of numbers in the collection. }
/**
Given an array and it will print out the result using recursion. */
private static void printResult(List arg)
{
printResult(arg, 0 );
}
private static void printResult(List arg, int index)
{
if(index == arg.size()-1){System.out.println(arg.get(index)+"^2");return;}
System.out.print(arg.get(index)+"^2 + ");
printResult(arg,index+1);
}
// you should use a for loop to print out the list....

PLEASE GO TO READ THE CODE ABOVE FOR MORE COOL SOLUTION LIKE THIS.


Here is a place where I put my answers for practice it, like the solution above is for recursive back tracking.

About

Answers to some of the problems.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitHub-Project Practice It Answers

Write a method printSquares that uses recursive backtracking to find all ways to express an integer as a sum of squares of unique positive integers. For example, the call of printSquares(200); should produce the following output:

1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 8^2 + 9^2
1^2 + 2^2 + 3^2 + 4^2 + 7^2 + 11^2
1^2 + 2^2 + 5^2 + 7^2 + 11^2
1^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2
1^2 + 3^2 + 4^2 + 5^2 + 7^2 + 10^2
2^2 + 4^2 + 6^2 + 12^2
2^2 + 14^2
3^2 + 5^2 + 6^2 + 7^2 + 9^2
6^2 + 8^2 + 10^2

Some numbers (such as 128 or 0) cannot be represented as a sum of squares, in which case your method should produce no output. Keep in mind that the sum has to be formed with unique integers. Otherwise you could always find a solution by adding 1^2 together until you got to whatever number you are working with.

As with any backtracking problem, this one amounts to a set of choices, one for each integer whose square might or might not be part of your sum. In many of our backtracking problems we store the choices in some kind of collection. In this problem you can instead generate the choices by doing a for loop over an appropriate range of numbers. Note that the maximum possible integer that can be part of a sum of squares for an integer n is the square root of n.

Like with other backtracking problems, you still need to keep track of which choices you have made at any given moment. In this case, the choices you have made consist of some group of integers whose squares may be part of a sum that will add up to n. Represent these chosen integers as an appropriate collection where you add the integer i to the collection to consider it as part of an answer. If you ever create such a collection whose values squared add up to n, you have found a sum that should be printed.

To help you solve this problem, assume there already exists a method printHelper that accepts any Java collection of integers (such as a list, set, stack, queue, etc.) and prints the collection's elements in order. For example, if a set s stores the elements [1, 4, 8, 11], the call of printHelper(s); would produce the following output:

1^2 + 4^2 + 8^2 + 11^2

//Tips: // each recursion should know where it is in the stack so that we won't call the // same number and try to square them over and over again.
//If the input parameter is 0, that means we have somewhat found the solution, and the // method should have a way to notify the method that calls it. (base case! )
// The other base case if that the remainder becomes zero, and in that // case, the method should just does nothing at all. //We use one arraylist as the parameter that is passed through the lovely recursion. public static void printSquares(int n)
{
if(n ==0)return;
printSquares_helper(new ArrayList(),n,1);
}
// level is the choice we made.
private static void printSquares_helper(List trials, int remainder,int level)
{
int upperbound =(int) Math.sqrt(remainder);
if(remainder ==0)
{
printResult(trials);
if(!trials.isEmpty())trials.remove(trials.size()-1); return;
}// the successful base case; for
(
int i= level; i<=upperbound; //important!
trials.add(i), printSquares_helper(trials, remainder-i*i,++i)
);
if(!trials.isEmpty())trials.remove(trials.size()-1); //Bacause the number is already considered
// so we need to remove it while retrieving a space for the method that calls this method.
// prevent duplicates of numbers in the collection. }
/**
Given an array and it will print out the result using recursion. */
private static void printResult(List arg)
{
printResult(arg, 0 );
}
private static void printResult(List arg, int index)
{
if(index == arg.size()-1){System.out.println(arg.get(index)+"^2");return;}
System.out.print(arg.get(index)+"^2 + ");
printResult(arg,index+1);
}
// you should use a for loop to print out the list....

PLEASE GO TO READ THE CODE ABOVE FOR MORE COOL SOLUTION LIKE THIS.


Here is a place where I put my answers for practice it, like the solution above is for recursive back tracking.

About

Answers to some of the problems.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages